-
Notifications
You must be signed in to change notification settings - Fork 0
Cookbook
samerook edited this page Apr 25, 2012
·
68 revisions
1. Android ORM의 동작설명
- JPA
>> 자바 퍼시스턴스 API(Java Persistence API, JPA)는 관계형 데이터베이스에 접근하기 위한 표준 ORM 기술을 제공하며, 기존에 EJB에서 제공되던 엔티티 빈(Entity Bean)을 대체하는 기술이다. JAP는 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만, JPA는 EJB 컨테이너에 의존하지 않으며 EJB, 웹 모듈 및 Java SE 클라이언트에서 모두 사용이 가능하다. 또한, JPA는 사용자가 원하는 퍼시스턴스 프로바이더 구현체를 선택해서 사용할 수 있다. - EntityManager EntityManager API는 하나의 특별한 작업 단위에서 하나의 데이터베이스에 접근하는데 사용된다. 그것은 영속 엔티티 인스턴스들을 생성시키고 제거시키는데, 그것들의 PRIMARY KEY 동일성(identity)로서 엔티티들을 찾는데, 그리고 모든 엔티티들에 대해 질의하는데 사용된다.
- create
- insert / update
- find
- delete
- SQLite / Java Type Mapper
>> ColumnType : UNDEFINED, INTEGER, REAL, NUMERIC, TEXT, BLOB, NONE
1. 문제해결 공간 (Troubleshooting) - 링크 제공 1. Annotation recipes (각 어노테이션 사용법 및 내용 설명) - Table
- Column
속성값 : PRIMARY KEY / AUTOINCREMENT
- One to one
- One to many
1. Criteria (기능 및 사용법)
1. 캐시 라이브러리 활용
- 캐시 정책 (1, 2차 캐시의 각 활용법 및 정책 설명)
>> 자바 퍼시스턴스 API(Java Persistence API, JPA)는 관계형 데이터베이스에 접근하기 위한 표준 ORM 기술을 제공하며, 기존에 EJB에서 제공되던 엔티티 빈(Entity Bean)을 대체하는 기술이다. JAP는 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만, JPA는 EJB 컨테이너에 의존하지 않으며 EJB, 웹 모듈 및 Java SE 클라이언트에서 모두 사용이 가능하다. 또한, JPA는 사용자가 원하는 퍼시스턴스 프로바이더 구현체를 선택해서 사용할 수 있다. - EntityManager
EntityManager em = EntityManagerFactory.getEntityManager();
DatabaseOpenHelper databaseHelper = new DatabaseOpenHelper(this);
EntityManager em = EntityManagerFactory.getEntityManager();
entityManager.createTable(My.class, SQLiteDatabaseUtils.getWritableDatabase(databaseHelper));
EntityManager em = EntityManagerFactory.getEntityManager();
em.getTransaction().begin();
MyClass my = new MyClass(“something”);
em.persist(my);
em.getTransaction().commit();
EntityManager em = EntityManagerFactory.getEntityManager();
em.getTransaction().begin();
MyClass my = em.find(My.class, "something");
em.getTransaction().commit();
DatabaseOpenHelper databaseHelper = new DatabaseOpenHelper(this);
EntityManager em = EntityManagerFactory.getEntityManager();
entityManager.dropTable(My.class, SQLiteDatabaseUtils.getWritableDatabase(databaseHelper));
>> ColumnType : UNDEFINED, INTEGER, REAL, NUMERIC, TEXT, BLOB, NONE
1. 문제해결 공간 (Troubleshooting) - 링크 제공 1. Annotation recipes (각 어노테이션 사용법 및 내용 설명) - Table
@Table
public class Music {
...
}
@Column
private String imageUrl;
@Column
private boolean isPlaying;
@Column
private byte[] bitmap;
@Column
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private Integer id;