Hibernate [JPA] soft delete 자동으로 처리하기 데이터를 삭제하는 방법에는 hard delete, soft delete 2가지 종류가 있습니다. soft delete는 실제로 데이터베이스에서 데이터를 삭제하는 것이 아니라, 테이블에 deleted와 같은 필드를 추가해주고, update 쿼리를 날려서 deleted 값을 변경해주는 방법입니다. soft delete를 한 경우 조회 쿼리 결과로 삭제 처리된 값이 반환되면 안되기 때문에 wher... HibernateJPAHibernate [JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1) Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER' 부분이다. Team 객체와 Member 객체를 각각 만들고 Member 객체의 Setter 메소드를 통해 Team 객체를 셋팅해준 뒤 em.find() 메소드를 통해 Membe... EagerJPAHibernateFetch Typelazy지연로딩즉시로딩Eager [JPA] 연관 관계 매핑 ( 양방향 ) 기존에 소스는 Member -> Team 으로만 단방향 매핑을 하였기 때문에 Member만이 Team을 알 수 있었습니다. 따라서 mappedBy="team"을 설정 함으로써 Member.team과 연관관계를 맺게됩니다. 여기 까지 설정을 하였다면 Team.getMember()를 통해 컬렉션으로 객체 그래프 탐색을 할 수 있을거라고 생각했지만 처음 출력해보면 아무것도 출력이 되지 않습니다. ... ORMHibernateJPAeffectiveJavaHibernate [JPA] 양방향 연관관계(2) 양방향 연관관계를 이용할 때 가장 많이 하는 실수에 대해 알아보자. 이전 글에서 위와 같은 연관관계를 양방향 연관관계라고 하였고, 이 때 "외래키가 있는 곳을 주인으로 정해라" 라는 규칙에 따라 Member의 team을 연관관계의 주인으로 결정했다. 이 때 다음과 같은 코드를 작성한다고 가정해보자. 이 코드를 실행한 후 DB에는 값이 적절하게 들어갈까? Team의 members는 mapped... ORM연관관계HibernateJPAHibernate Hibernate 원리 및 응용 1. Configuration()을 사용합니다.configure();hibernate를 읽고 해석합니다.cfg.xml 프로필 2. hibernate.cfg.xml의 3. Hibernate는 바이트 코드 강화 프로그램이 아닌 자바 반사 메커니즘을 사용하여 투명성을 실현한다. 2. Hibernate는 어떻게 로딩을 지연합니까? 1. Hibernate2 지연 로드 구현: a) 솔리드 객체 b) 컬... Hibernate Hibernate 캐시 상세 정보 다음 예: 결과: Query의list() 방법을 사용할 때, SQL 문장을 한 번만 생성하여 모든 대상을 조회하고, iterate () 방법을 사용할 때, 모든 대상의 ID를 먼저 얻은 다음, 각 ID에 따라 SQL 문장 조회를 생성합니다.두 번째 세션에서는 iterate () 방법을 사용합니다. 1레벨 캐시든 2레벨 캐시든 모두 대상만 캐시할 수 있고 속성의 값을 캐시할 수 없습니다.다음 ... Hibernate캐시 Spring과 Hibernate의 통합 사무 관리에 대한 이해 Spring 사무 관리를 이야기하기 전에 우리가 Spring을 사용하지 않을 때 Hibernate에서 데이터 조작을 어떻게 하는지 생각해 봅시다.Hibernate에서 우리가 매번 조작을 할 때마다 우리는 먼저 사무를 열고 데이터 조작을 한 다음에 사무를 제출하고 닫아야 한다. 만약에 매번 수동으로 사무를 제출하고 싶지 않다면 당신은 Hibernate에 제출할 수 있다.cfg.xml 내 파일에... SpringHibernate통합사무 관리 Liquibase 데이터베이스 마이그레이션 적용하기 - Spring, Jpa, Hibernate, Liquibase Plugin, AWS private database jpa entity 와 데이터베이스를 비교하기 위해서는 liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:4.6.2") 가 필요합니다. liquibase plugin task 를 실행시키면 LiquibaseTask 가 동작하게 됩니다. 하지만 plugin 코드를 살펴보면 각각의 gradle task 들은 이미 command 를 함께 정의하여... DatabaseLiquibasepluginawsJPASpringHibernateDatabase Hibernate4 실행 save () 또는 update () 의 잘못된 문제를 해결하는 방법 최근 인터넷 쇼핑몰 프로젝트를 쓸 때 문제가 하나 생겼다. Hibernate는save()나 update() 방법을 실행한 후에 아무런 효과가 없고 데이터베이스에 아무런 변화가 없고 컨트롤러도 아무런 잘못도 보고하지 않아서 어이가 없다. 제가 인터넷에서 찾아봤는데 어떤 사람은 메인 키의 자성장 문제라고 했고 어떤 사람은 사무를 열지 않아서 데이터베이스에 쓰거나 업데이트할 수 없다고 했습니다. ... Hibernatesaveupdate
[JPA] soft delete 자동으로 처리하기 데이터를 삭제하는 방법에는 hard delete, soft delete 2가지 종류가 있습니다. soft delete는 실제로 데이터베이스에서 데이터를 삭제하는 것이 아니라, 테이블에 deleted와 같은 필드를 추가해주고, update 쿼리를 날려서 deleted 값을 변경해주는 방법입니다. soft delete를 한 경우 조회 쿼리 결과로 삭제 처리된 값이 반환되면 안되기 때문에 wher... HibernateJPAHibernate [JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1) Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER' 부분이다. Team 객체와 Member 객체를 각각 만들고 Member 객체의 Setter 메소드를 통해 Team 객체를 셋팅해준 뒤 em.find() 메소드를 통해 Membe... EagerJPAHibernateFetch Typelazy지연로딩즉시로딩Eager [JPA] 연관 관계 매핑 ( 양방향 ) 기존에 소스는 Member -> Team 으로만 단방향 매핑을 하였기 때문에 Member만이 Team을 알 수 있었습니다. 따라서 mappedBy="team"을 설정 함으로써 Member.team과 연관관계를 맺게됩니다. 여기 까지 설정을 하였다면 Team.getMember()를 통해 컬렉션으로 객체 그래프 탐색을 할 수 있을거라고 생각했지만 처음 출력해보면 아무것도 출력이 되지 않습니다. ... ORMHibernateJPAeffectiveJavaHibernate [JPA] 양방향 연관관계(2) 양방향 연관관계를 이용할 때 가장 많이 하는 실수에 대해 알아보자. 이전 글에서 위와 같은 연관관계를 양방향 연관관계라고 하였고, 이 때 "외래키가 있는 곳을 주인으로 정해라" 라는 규칙에 따라 Member의 team을 연관관계의 주인으로 결정했다. 이 때 다음과 같은 코드를 작성한다고 가정해보자. 이 코드를 실행한 후 DB에는 값이 적절하게 들어갈까? Team의 members는 mapped... ORM연관관계HibernateJPAHibernate Hibernate 원리 및 응용 1. Configuration()을 사용합니다.configure();hibernate를 읽고 해석합니다.cfg.xml 프로필 2. hibernate.cfg.xml의 3. Hibernate는 바이트 코드 강화 프로그램이 아닌 자바 반사 메커니즘을 사용하여 투명성을 실현한다. 2. Hibernate는 어떻게 로딩을 지연합니까? 1. Hibernate2 지연 로드 구현: a) 솔리드 객체 b) 컬... Hibernate Hibernate 캐시 상세 정보 다음 예: 결과: Query의list() 방법을 사용할 때, SQL 문장을 한 번만 생성하여 모든 대상을 조회하고, iterate () 방법을 사용할 때, 모든 대상의 ID를 먼저 얻은 다음, 각 ID에 따라 SQL 문장 조회를 생성합니다.두 번째 세션에서는 iterate () 방법을 사용합니다. 1레벨 캐시든 2레벨 캐시든 모두 대상만 캐시할 수 있고 속성의 값을 캐시할 수 없습니다.다음 ... Hibernate캐시 Spring과 Hibernate의 통합 사무 관리에 대한 이해 Spring 사무 관리를 이야기하기 전에 우리가 Spring을 사용하지 않을 때 Hibernate에서 데이터 조작을 어떻게 하는지 생각해 봅시다.Hibernate에서 우리가 매번 조작을 할 때마다 우리는 먼저 사무를 열고 데이터 조작을 한 다음에 사무를 제출하고 닫아야 한다. 만약에 매번 수동으로 사무를 제출하고 싶지 않다면 당신은 Hibernate에 제출할 수 있다.cfg.xml 내 파일에... SpringHibernate통합사무 관리 Liquibase 데이터베이스 마이그레이션 적용하기 - Spring, Jpa, Hibernate, Liquibase Plugin, AWS private database jpa entity 와 데이터베이스를 비교하기 위해서는 liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:4.6.2") 가 필요합니다. liquibase plugin task 를 실행시키면 LiquibaseTask 가 동작하게 됩니다. 하지만 plugin 코드를 살펴보면 각각의 gradle task 들은 이미 command 를 함께 정의하여... DatabaseLiquibasepluginawsJPASpringHibernateDatabase Hibernate4 실행 save () 또는 update () 의 잘못된 문제를 해결하는 방법 최근 인터넷 쇼핑몰 프로젝트를 쓸 때 문제가 하나 생겼다. Hibernate는save()나 update() 방법을 실행한 후에 아무런 효과가 없고 데이터베이스에 아무런 변화가 없고 컨트롤러도 아무런 잘못도 보고하지 않아서 어이가 없다. 제가 인터넷에서 찾아봤는데 어떤 사람은 메인 키의 자성장 문제라고 했고 어떤 사람은 사무를 열지 않아서 데이터베이스에 쓰거나 업데이트할 수 없다고 했습니다. ... Hibernatesaveupdate