일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 포인트클라우드
- 자율주행
- 영속성컨텍스트
- 자바ORM표준JPA프로그래밍
- 알고리즘
- DeepLearning
- 자료구조
- 디자인패턴
- Python
- Spring Batch
- 프로그래머스
- 딥러닝
- cartograhper
- Jetson
- 네트워크
- 장애물인식
- 파이썬
- 운영체제
- persistance context
- MySQL
- Hibernate
- 이펙티브자바
- Java
- 아두이노
- 배달로봇
- 논문리뷰
- 자바
- Database
- JPA
- 논문
- Today
- Total
목록분류 전체보기 (56)
제리 devlog
+ 연산으로 계산한 경우 10만개의 "abcd"를 붙였다. public static void main(String[] args){ long startTime = System.currentTimeMillis(); String result = ""; for(int i=0; i
객체의 참조는 단방향이다. 반면 테이블에서의 join은 어느쪽이나 가능한다. member와 team의 관계는 다대일이다. 하나의 team에는 여러 member가 소속될 수 있다. 그렇기에 team의 객체에서는 컬렉션을 사용한다. 테이블의 연관관계는 team의 외래 키 하나로 양방향으로 조회할 수 있다. 양방향 객체의 연관관계를 만든다고해서 테이블에 새로 추가할 것은 없다. 양방향 연관관계 매핑 @Entity public class Member { @Id @Column(name = "MEMBER_ID") private String id; private String username; @ManyToOne @JoinColumn(name="TEAM_ID"); private Team team; //연관관계 설정 p..
객체의 참조와 테이블의 외래 키를 매핑을 어떻게 할까? 방향 : 테이블과 달리 객체는 참조의 방향이 존재한다. 다중성 : 1:N, N:1, 1:1, N:M의 관계가 있다. 연관관계의 주인 : 객체를 양방향 연관 관계로 만드려면 연관관계의 주인을 정해야한다. 단방향 연관관계 위와 같이 객체의 연관관계를 테이블과 매핑하기 위해서는 아래와 같이 코드를 작성한다. @Entity public class Member { @Id @Column(name = "MEMBER_ID") private String id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; public void setTeam(Team team){..
객체와 테이블 매핑 : @Entity, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관 관계 매핑 : @ManyToOne, @JoinColumn @Entity 테이블과 매핑할 클래스에 붙인다. @Entity가 붙은 클래스는 JPA가 관리하며 엔티티라 부른다. @Entity(name = "")속성을 사용하여 엔티티의 이름을 지정할 수 있다. 기본 값은 클래스 이름이다. @Entity를 적용 시 주의사항은 아래와 같다. * 기본 생성자는 필수(파라미터가 없는 public, protected생성자) * final 클래스, enum, interface, inner클래스는 사용불가 * 저장할 필드에 final을 사용하면 안 된다. @Table 엔티티와 매핑할 테이블을 지정한다. 생략..
자바에서 제공하는 두 가지 객체 소멸자를 제공한다. 1. finalizer 2. cleaner 두 가지 객체 소멸자를 사용하면 c언어처럼 명시적으로 메모리를 해제할 수 있을까? -> 곧바로 메모리를 해제하는 것은 불가능하다. finalizer는 예측할 수 없고 상황에 따라 위험할 수 있어 일반적으로 불필요함. 나름에 쓰임새가 있지만 기본적으로는 쓰지 말아야 한다(자바9부터 deprecated) cleaner는 자바9부터 finalizer를 대신 제시됨. cleaner는 finalizer보다는 덜 위험하지만, 여전히 예측할 수 없고, 느리고, 일반적으로 불필요함 C++에서는 파괴자(destructor)가 존재한다. 특정 객체를 생성하는 생성자와 대척점으로 자원을 회수하는 보편적인 방법. JAVA에서는 가비..
영속성 컨텍스트란? 엔티티를 영구 저장하는 환경이라는 뜻이다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 저장한다. em.persist(member); 이 코드는 단순히 회원 엔티티를 저장하는 것이 아니다. persist()는 엔티티 매니저를 사용해서 엔티티를 영속성 컨텍스트에 저장한다. 영속성의 생명주기에는 4가지가 있다. 1. 비영속 엔티티의 객체를 생성한 상태이며 아직 저장하지 않았다. 따라서 영속성 컨텍스트나 데이터베이스에 관련이 없는 비영속상태이다. Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 2. 영속 엔티티 매니저를 통해 엔티티를 영속성 ..
새로운 프로젝트를 생성한다. 의존성 관리는 maven을 사용한다. 프로젝트 구조는 아래와 같다. 먼저 의존성 관리를 위해 pom.xml을 보자 4.0.0 org.hibernate hibernate-entitymanager 5.4.10.Final com.h2database h2 1.4.199 org.example ch2-jpa 1.0-SNAPSHOT 여기서 두가지 라이브러리를 사용한다. hibernate는 JPA 표준과 하이버네이트를 포함하는 라이브러리이다. h2 데이터베이스는 h2 데이터 베이스를 사용하게해준다. 따로 mysql이나 오라클같은 데이터베이스 대신 가벼운 h2를 사용하여 간편하게 테스트한다. 이번에는 회원 클래스에 JPA가 제공하는 매핑 어노테이션을 추가해보자. @Entity @Table(n..
JPA는 자바 ORM(객체관계매핑) 기술에 대한 API 표준 명세다. 즉, 인터페이스를 모아둔 것이다. 따라서 JPA를 사용하려면 JPA를 구현한 ORM프레임워크를 사용해야한다. 이중 Hibernate가 가장 대중적이다. JPA라는 표준 덕분에 특정 구현 기술에 대한 의존도를 줄일 수 있고 다른 구현 기술로 손쉽게 이동할 수 있다. 다시말하면 Hibernate가 아닌 다른 ORM프레임워크로 변경해도 JPA인터페이스를 사용하고있기 때문에 코드상에서 변경해야할 부분이 크게 줄어든다. 왜 JPA를 사용해야 하는가? 1. 생상성 JPA를 사용하면 자바 컬렉션에 객체를 저장하듯이 JPA에 저장할 객체를 전달하면된다. SQL을 작성하고 JDBC API를 사용하는 반복적인 일을 JPA에서 대신해준다. 나아가서 JPA..