H2
Database, JPA를 연습하는 코드에 적용해봤다.
H2DB 설치 에서 설치 한 뒤,
bin
폴더 안 h2w.bat
파일을 실행하면 H2
서버가 구동 된다.
public class Main {
public static void main(String[] args) {
Selector selector = new ProxySelector(new QuerySelector(), Code.LAZY);
selector.select();
}
}
public class QuerySelector implements Selector{
@Override
public Member select() {
Member member = new Member();
member.setId(100L);
member.setName("안녕하세요");
return member;
}
}
@FunctionalInterface
public interface Selector {
Member select();
}
public class ProxySelector implements Selector{
private final QuerySelector querySelector;
private final Code code;
public ProxySelector(QuerySelector querySelector, Code code) {
this.querySelector = querySelector;
this.code = code;
}
@Override
public Member select(){
//Transaction - Begin
CEntityManagerFactory.initialization();
EntityManager entityManager = CEntityManagerFactory.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
//Transaction - Commit
try {
if(Code.LAZY == code){
System.out.println("Loading만 되었어!");
}else{
}
Selector selector = ()->{
Member member = new Member();
member.setId(100L);
member.setName("test");
return member;
};
Member member = selector.select();
// Member member = this.querySelector.select();
entityManager.persist(member);
entityTransaction.commit();
}
//Transaction - Rollback
catch (Exception e) {
entityTransaction.rollback();
}
//Transaction - Close
finally {
entityManager.close();
}
CEntityManagerFactory.close();
return null;
}
}
@Entity
public class Member {
@Id
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public enum Code {
LAZY
}