엄호연
-
JPA 기본키 저장개발/java 2015. 12. 28. 17:17
1. IDENTITY 전략@Entity public class Board { @Id @GeneratedValue(strategy GenerationType.IDENTITY) private Long id; } 엔티티가 영속상태가 되려면 식별자가 필요함.IDENTITY 전략은 데이터베이스에 저장한 후에 식별자값을 구할수 있으므로 em.persist() 를 호출함과 동시 INSERT SQL이 동작한다.트랜잭션을 지원하는 쓰기 지연이 동작하지 않음. 2. SEQUENCE 전략 @Entity @SequenceGenerator ( name "BOARD_SEQ_GENERATOR", sequenceName " BOARD_SEQ", //매핑할 데이터베이스 시퀀스 이름 initialValue = 1, allocationS..
-
JPA update 변경감지개발/java 2015. 12. 28. 15:48
JPA 는 영속성 컨텍스트에 보관할때 최초 상태를 복사해서 저장해두는데 이것을 스냅샷이라한다.그리고 플러시 시점에 스냅샷과 엔티티를 비교해서 변경된 엔티티를 찾는다. em.find() 로 member 를 찾을시 1차캐시에 저장함과 동시에 최초상태를 저장해둠.1. 엔티티와 스법삿을 비교해서 변경된 엔티티를 찾는다.2. 변경된 엔티티가 있으면 수정 쿼리를 생성해서 쓰기 지연 SQL 저장소에 보낸다.3. 쓰기 지연 저장소의 SQL을 데이터베이스에 보낸다.4. 데이터베이스 트랜잭션을 커밋한다. 변정 감지는 영속성 컨텍스트가 관리하는 영속 상태의 엔티티에만 적용된다.비영속, 준영속처럼 영속성 컨텍스트의 관리를 받지 못하는 엔티티는 값을 변경해도 데이터베이스에 반영되지 않는다. 만약 수정자를 age와 name만 변..
-
엔티티의 생명주기개발/java 2015. 12. 28. 15:23
1. 비영속 @Entity 상태의 객체를Member member = new Member(); 로 생성후member.setId("momo")member.setAge(24)로 수정한다고 하여도 아직 컨텍스트에 포함되지않은 비영속 상태이다 2. 영속 위에 member 엔티티가 영속상태(영속성컨텍스트가 관리하는 엔티티)로 만드려면엔티티 매니저를 통해서 영속화 시켜야한다.ex 1 ) em.persist(member)ex 2 ) em.find(Member.class,member.getId()) 3. 준영속 준영속 상태는 영속성 컨텍스트가 관리하던 영속상태의 엔티티를영속성컨텍스트가 관리하지 않을시 준영속으로 변경시 준영속상태가됨 ex 1 ) em.detach(member) //하나의 엔티티를 준영속으로 변경하기ex ..
-
EntityManagerFactory와 EntityManager 의 사용개발/java 2015. 12. 28. 15:03
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence-unit 태그의 이름"); // META-INF/persistence.xml EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성 EntityManagerFactory 는 생성비용이 많이들기때문에 어플리케이션 실행시 딱한번만 생성해서 어플리케이션전체공유하도록 설계되어있음(쓰레드 세이프) EntityManager 는 생성비용이 거의 들지 않으므로 매번 생성해서 사용해야한다.자꾸 코드에 EntityManager em = emf.createEntityManager(); 코드가 나오는게 거슬리긴 하지만 추후응용으로 가면 ..
-
JPA 에서 글등록 및 수정 삭제 간단예제개발/java 2015. 12. 28. 14:57
public class JpaMain { public static void main(String[] args) { //엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성 EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득 try { tx.begin(); //트랜잭션 시작 logic(em); //비즈니스 로직 tx.commit();//트랜잭션 커밋 } catch (Exception e) { e.printStackTrace(); tx.roll..
-
나라 위경도개발/javascript 2015. 12. 24. 16:31
var asia = [ '괌_13.444304, 144.79373099999998_1125000000','나우루_-0.522778, 166.93150300000002_1720000000','네팔_28.394857, 84.124008_1155000000','노르웨이속령_-68.833333,-90.583333_1719000000','노포크 아일랜드_29.0346263,167.9220081_1745000000','뉴질랜드_-40.900557, 174.88597100000004_1703000000','뉴칼레도니아_-20.904305, 165.61804200000006_1704000000','니우에_-19.054445, -169.867233_1768000000','대만_23.69781, 120.9605149999..
-
오라클 날짜연산개발/dbms 2015. 12. 22. 14:23
TO_CHAR(SYSDATE, 'YYYY.MM.DD') -- 년월일 TO_CHAR(SYSDATE, 'YYYY.MM.DD HH:MI:SS') -- 년월일 시분초 (12시) TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') -- 년월일 시분초 (24시) TO_CHAR(SYSDATE, 'YYYY.MM.DD PM HH:MI:SS ') -- 년월일 오전오후 시분초 TO_CHAR(SYSDATE, 'YYYY.MM.DD DY HH:MI:SS') -- 년월일 요일 시분초 (금) TO_CHAR(SYSDATE, 'YYYY.MM.DD DAY HH:MI:SS') -- 년월일 요일 시분초 (금요일) -- 기본적인 날짜연산SELECT CURRENT_DATE FROM DUAL; -- 현재일자SELECT SY..