Tomcat JDBC의 주요 프로퍼티 Tomcat JDBC 모듈의 DataSource(org.apache.tomcat.jdbc.pool.DataSource) 클래스는 커넥션 풀 기능을 제공하는 DataSource 구현 클래스입니다. DataSource 클래스는 커넥션을 몇 개 만들지 지정할 수 있는 메서드를 제공합니다. setInitialSize(int) 커넥션 풀을 초기화 할때 생성할 초기 커넥션 개수 지정 기본값 : 10 setMaxActive(int) 커넥션 풀에서 가져올 수 있는 최대 커넥션 개수 지정 기본 값 : 100 setMaxIdle(int) 커넥션 풀에 유지할 수 있는 최대 커넥션 개수 지정 기본값 : maxActive setMinIdle(int) 커넥션 풀에 유지할 최소 커넥션 개수 지..
Database
연관관계의 필요성 '객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.' - 조영호 님의 '객체지향의 사실과 오해' 라는 책에서. [예제] 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. [객체, 테이블 모델링] 연관관계가 없는 객체 [객체를 테이블에 맞춰 모델링 하는 코드] 참조 대신에 외래 키를 그대로 사용한다. @Entity public class Member{ @Id @GeneratedValue private Long id; @Column(name ="USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; // 이하 생략.. } @Entity publi..
기본 키 매핑 기본 키 매핑 어노테이션 @Id @GeneratedValue @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 기본 키 매핑방법에는 직접 할당 방법과 자동 생성 방법이 있다. 직접 할당 방법은 @Id만 사용하고, 자동 생성 방법은 @GeneratedValue를 사용한다. 옵션은 다음과 같다. 옵션 - IDENTITY 데이터베이스에 위임한다.(MYSQL) 옵션 - SEQUENCE 데이터베이스에 시퀀스 오브젝트를 사용한다.(ORACLE) 해당 옵션을 사용하려면 @SequenceGenerator 가 필요하다. 옵션 - TABLE 키 생성용 테이블을 사용하고, DB에서 사용한다. 해당 옵션을 사용하려면 @TableGenera..
엔티티 매핑 1) 객체와 테이블 매핑 : @Entity, @Table 2) 필드와 컬럼 매핑 : @Column 3) 기본 키 매핑 : @Id 4) 연관관계 매핑 : @ManyToOne, @JoinColumn 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라고 부른다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수다. [주의할 점] 1) 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) 2) final 클래스, enum, interface, inuuer 클래스를 사용해선 안된다. 3) 저장할 필드에 final 키워드를 사용해선 안된다. 속성 - name JPA에서 사용할 엔티티 이름을 지정한다. 기본값은 클래스 이름을..
엔티티 수정하기 - 변경감지 EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); // 트랜잭션 start //영속 엔터티 조회 Member memberA = em.find(Member.class, "memberA"); //영속 엔터티 데이터 수정 memberA.setUsername("hi"); memberA.setAge(10); //JPA는 업데이트 함수가 따로 있을까? transaction.commit(); // 트랜잭션 commit 변경 감지 (Dirty Checking) 1. flush 함수 호출 2. 엔티티와 스냅샷 비교 JPA는 영속 ..
데이터베이스 방언 JPA는 특정 베이스에 종속하지 않는다. 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다. 가변 문자 MySQL : VARCHAR Oracle : VARCHAR2 문자열 자르는 함수 SQL 표준 : SUBSTRING( ) Oracle : SUBSTR( ) 페이징 MySQL : LIMIT Oracle : ROWNUM 방언은 SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능이다. 각 데이터베이스 방언을 사용하기 위해 hibernate.dialect 속성에 지정한다. H2 : org.hibernate.dialect.H2Dialect Oracle 10g : org.hibernate.diaslect.Oracle10gDialect MySQL : org.hibernate..