Programming-[Backend]/JPA (37) 썸네일형 리스트형 [JPA기본] 2. 프로젝트 생성, JPA 기본 CRUD 및 트랜잭션 1. 프로젝트 생성 데이터베이스 생성 H2 데이터베이스로 실습한다. 홈페이지에서 다운로드 후, console을 실행하여 아래 사진과 같이 Embedded용 Generic H2를 만든다. 이렇게 만들면 데이터 베이스를 생성하게 된 것이 된다. 이렇게 하면 "C:\Users(사용자)\사용자 계정 이름\" 위치에 JDBC URL의 맨 마지막 글자인 test.mv Data Base File이 생성된 것을 확인할 수 있다. 주의사항 자바가 설치되어 있어야 한다!! H2는 자바를 기반으로한 jar 형태의 executable file을 제공하기 때문에 컴퓨터에 자바가 설치되어 있지 않다면 실행이 불가하다. 이후 이 Data Base File을 기반으로 Generic H2 Server 방식으로 통신을 통해 접근할 수 .. [JPA기본] 1. JPA 필요성 : 객체와 RDB의 패러다임 불일치 1. JPA란 JPA는 SQL(Structured Query Language) 중심적인 개발을 대체해주는 ORM(Object Relational mapping) 이다. 객체 지향적인 개발 스타일을 유지하면서 데이터 베이스와의 상호작용이 가능하도록 해준다. 객체와 데이터베이스의 관계를 매핑 해주는 것이 ORM이다. 객체 지향적 언어인 자바와 관계형 데이터 베이스(RDB, Relational DataBase)간에는 다음 섹션에서 다룰 패러다임 불일치의 문제가 있는데, 여기서 발생하는 개발에서의 생산성 저하 문제를 해결해주는 도구라고 할 수 있다. 원래 SQL 중심적인 개발에서는 정보를 저장하는 테이블마다 반복적으로 CRUD에 해당하는 SQL 코드를 작성해야만 했다. 객체는 어떤 데이터의 속성과 기능을 갖고 .. [작성중][TIL][링크]Entity에 cascade=CascadeType.PERSIST 사용 시 주의 1:N의 관계를 갖는 A.class와 B.class가 있는 경우, @OneToMany(fetct=FetchType.LAZY, mappedBy = "...", casecade = CascadeType.PERSIST) private List Bs; CascadeType.PERSIST를 하면, A 타입만 JPA를 통해 영속성 객체로 불러오더라도, B 타입도 영속성 객체로 함께 불려오게 된다. 이것 때문에 엄청 오래 삽질을 했다... 정확한 원리는 아직 모르겠지만, 둘 다 영속성 객체로 걸려있으면 실제 SQL로 CRUD 시에 서로의 값을 참조하면서 무조건 넣어주어야 하는 것 같다. 링크 내용을 읽고 향후 JPA 개념이 생기면 정확하게 이해하자! 참조 [1] [jpa] CascadeType.PERSIST를 함부로.. [링크] @Transient 어노테이션 의미, 사용 시 유의사항 요약 @Transient 어노테이션은 @Entity 어노테이션이 정의된, 엔티티 클래스에서 사용한다. 사용목적은 JPA에서 엔티티의 필드값들을 영속성 객체로 관리하는데, 관리 대상에서 해당 필드나 메서드를 제외하기 위함이다. 예를 들어 아래와 같이 엔티티 클래스에 두 가지 필드가 존재하는 경우, private String password; @Transient private String confirmedPassword; confirmedPassword 필드는 단순 확인용이므로 데이터베이스상에 저장되는 값이 아니고, 영속성 객체로 관리될 필요도 없다. 이럴 경우 @Transient 어노테이션을 사용한다. 메서드에도 사용할 수 있는데, 필요시 관련 상세 내용은 링크에서 확인하자. 링크 https://gmoon.. [TIL] Querydsl cannot find symbol 에러 Querydsl을 사용하다보면 Repository에서 Q객체들을 생성할 수 없다고 하면서, querydsl cannot find symbol.. 에러가 발생한다. 구글링해보면 annotation processor 설정 문제라던가, Graven에서 querydsl의 참조 경로를 다시 지정해줘야 한다는 해결책들이 나와있다. 한가지 더 추가하자면, maven으로 프로젝트를 하는 경우 repository가 아니라 다른 클래스 파일에서 문제가 발생해서, 해당 오류 부분 때문에 Q객체를 생성하지 못하는 경우가 많았다. 생각해보면 멀쩡하게 잘 되던 build가 안되는 이유는, 내가 무언가를 바꾸었기 때문일 확률이 높다. 다른 사례들에서 보여주는 원인과 해결책은 설정이나 환경 문제인데 프로그래밍을 하면서 이런 설정들을.. 이전 1 2 3 4 5 다음