반응형

mybatis

    스프링 부트에서 사용하는 JPA 기능 정리

    스프링 프레임워크에서 제공하는 JPA는 별도의 구현 클래스 없이 인터페이스만을 사용할 수 있도록 제공한다. 제공되는 인터페이스 JpaRepository는 실행시점에 자동으로 인터페이스 내용을 연결하는 엔티티에 맞게 자동으로 구현해준다. 만약 스프링 JPA 인터페이스에서 제공하지 않는 기능을 사용하고 싶을 때는 메서드명을 특정한 규칙대로 만들어서 사용하면 인터페이스가 알아서 그 이름에 맞는 JPQL을 만들어서 실행해준다. 스프링 JPA 인터페이스는 Mysql같은 RDBMS 뿐만 아니라 Mongodb, Redis와 같은 NoSQL에도 동일한 인터페이스를 사용해서 기능을 사용할 수 있도록 제공해준다. 공통으로 사용할 수 있기에 아주 편리하다. 우선 스프링 부트에 JPA를 사용하기 위해서 Gradle에 라이브러..

    연관관계 매핑 - 다대일 매핑 (단반향)

    연관관계 매핑을 해야하는 경우가 많다. 예를 들어 학생을 가지고 학생에 소속 반을 찾거나 반을 사용해서 학생들을 찾거나 할 때가 있다. 이 때 양방향과 단방향 관계가 존재하는데 아래의 객체 형태를 보면 이해가 더 쉽다. 단방향 class Student { Class class; } class Class {} 양방향 class Student { Class class; } class Class { Student student; } 이중에서 먼저 단방향 연관 관계에 대해 먼저 공부해보자. 단방향 연관관계 학생과 반이있다. 학생은 하나의 반에 소속된다. 학생과 반은 다대일 관계이다. (학생이 다, 반이 일) 학생 테이블을 담는 객체는 Student, 반 테이블을 담는 객체는 Classes를 사용한다. 학생 테이..

    JPA(Java Persistence Api)의 장점과 단점 및 사용해야 하는 이유.

    국내에서는 Mybatis를 사용하지만 대기업과 여러 스타트업에서는 JPA를 사용하고 있는 추세이다. 그리고 세계적으로 JPA 특히 ORM 프레임워크인 하이버네이트 사용률이 더 높다.그래서 더 자세한 부분을 이해하기 위해서 공부를 시작했다. 공부 시작하기전에 왜 JPA가 좋은지 정리해봤다. 생산성- 개발자가 일일히 CRUD용 쿼리를 작성해줘야하던 Mybatis와 같은 Mapper방식은 컬럼이 추가되거나하면 수정해주어야하는 부분이 상당히 많았다. 이로 인해서 자바를 사용하지만 객체중심 개발이 아니라 데이터베이스 흐름으로 개발을 하게되는 문제가 있다. JPA를 사용하게 되면 쿼리를 직적 생성하는 것이 아니고 만들어진 객체로 데이터베이스를 다루기 때문에 객체 중심으로 개발을 진행할 수 있다. 유지보수- SQL을..

    Spring boot maven 빌드 후 jar 파일 실행 시 Mybatis type Alias 에러 수정

    Spring Boot에서 Maven으로 빌드 후 생성된 jar 파일을 java -jar wedulpos.jar로 실행시키려 하였으나, 다음과 같은 오류가 발생하였다. 에러내용[ERROR] [SpringApplication.java:842] Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authProvider': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDep..

    Mybatis에서 쿼리 작성 시 부등호 사용하면 발생하는 Error 수정

    Mybatis에서 사용하는 쿼리중에 와 같은 부등호가 들어가게 되면 에러가 발생한다. [에러내용]"The content of elements must consist of well-formed character data or markup." 이를 해결하기 위해서는 부등호를 사용하는 쿼리는 을 감싸주어야 한다. 12345678910

    Mabatis #, $ 차이점

    Mabatis 사용 시 #, $의 차이점을 정확하게 정리하지 않아 헷갈렸다. [차이점] 1. select * from member where id = #{dto.id} 2. select * from member where id = ${dto.id} 1번 방식(#)은 select * from member where id = ? 다음과 같이 진행되어 바인딩 되어 실행되기 때문에 SQL Injection 대비가 가능하다. 2번 방식($)은 ${dto.id} 영역에 데이터로 값을 치환해서 텍스트 자체로 사용한다.

    Mybatis에서 parameterType을 List로 insert하기

    Mybatis에서 parameterType을 List로 지정하여 쿼리를 수행하고 싶은 경우 다음과 같이 진행한다, 1234567891011121314151617181920212223// 전송 데이터 형식List accouts = new ArrayList();accounts.add(new AccountDto("wedul", 123);accounts.add(new AccountDto("cjung", 456); accountDao.insertAccounts(accounts); // MybatisINSERT INTO account( id, age) VALUES ( #{item.id} ,#{item.age}) Colored by Color Scriptercs

    Mybatis String을 ParameterType으로 넘길때

    mybatis에서 String(문자열) 하나의 값만 넘길때는 다음과 같이 사용한다.

    Mybatis의 동적 SQL

    Mybatis의 동적 SQL Mybatis가 가지는 표현식은 다음과 같다. IfChoose(when, otherwise)Trim(where, set)Foreach 기능 사용 예 설명 if AND title like #{title} 코드로 작성할 때의 if 구문에 대한 처리 -> 참 거짓을 구별해서 사용할 때 처리한다. Choose, When, otherwise AND title like #{title"" AND author_name like #{author.name} AND featured = 1 switch와 같은 상황에 대한 처리 Trim, Where,set … 로직을 처리하면서 필요한 구문을 변경 foreach

    Mybatis의 #{} 문법 사용방법

    Mapper에서 #{num}에 들어가는 값은 getNum(), setNum()을 의미한다. 만약 하나의 mapper에서 두 개이상의 #{userid}, #{userpw} 와 같이 사용된다면 그것은 map의 형태로 들어오는 데이터의 key값이 안에 들어가 있는 문자열이다. 예를 들어 mapper에 insert into tbl_member (userid, userpw, username, email) values (#{userid}, #{userpw}, #{username}, #{email}) 다음과 같이 되어 있을 경우 DAOImpl 클래스에서 Public

반응형