EntityManager的定�br>
The EntityManager manages the O/R mapping between a fixed set of entity classes and an underlying data source.
It provides APIs for creating queries, finding objects, synchronizing objects, and inserting objects into the database.
It also can provide caching and manage the interaction between an entity and transactional services in a Java EE environment such as JTA.
The EntityManager is tightly integrated with Java EE and EJB but is not limited to this environment; it can be used in plain Java programs.
An EntityManager maps a fixed set of classes to a particular database. This set of classes is called a persistence unit .
In Java SE, entity managers are created using a javax.persistence.EntityManagerFactory
ExampleåQ?br> EntityManagerFactory factory = Persistence.createEntityManagerFactory("titan", map);
EntityManager manager = factory.createEntityManager();
在Java SE环境ä¸ï¼Œä½¿ç”¨å®ŒEntityManagerFactoryåŽï¼Œæœ€å¥½å°†å…¶å…³é—,以释攑օ¶å 有的资æºã€?br>
å’ŒJava SE环境ä¸ä¸€æ øP¼Œåœ¨Java EEä¸ï¼Œä¸€ä¸ªæ³¨å…¥çš„EntityManagerFactoryä¼?x¨¬)被EJB容器自动关é—åQŒå®žé™…上åQŒå¦‚æžœä½ è°ƒç”¨EntityManagerFactoryçš„clost()æ–ÒŽ(gu¨©)³•æ—Óž¼Œä¼?x¨¬)抛出IllegalStateException异常ã€?
public interface EntityManager {
public void persist(Object entity);
public <T> T find(Class <T> entityClass, Object primaryKey);
public <T> T getReference(Class <T> entityClass, Object primaryKey);
public <T> T merge(T entity);
public void remove(Object entity);
public void lock(Object entity, LockModeType lockMode);
public void refresh(Object entity);
public boolean contains(Object entity);
public void clear( );
public void joinTransaction( );
public void flush( );
public FlushModeType getFlushMode( );
public void setFlushMode(FlushModeType type);
public Query createQuery(String queryString);
public Query createNamedQuery(String name);
public Query createNativeQuery(String sqlString);
public Query createNativeQuery(String sqlString, String resultSetMapping);
public Query createNativeQuery(String sqlString, Class resultClass);
public Object getDelegate( );
public void close( );
public boolean isOpen( );
}
Persistence context的定�br>
A persistence context is a set of managed entity object instances.
Persistence contexts are managed by an entity manager.
There are two types of persistence contexts: transaction-scoped and extended persistence contexts.
A persistence context can be created by calling the EntityManagerFactory.createEntityManager( ) method. The returned EntityManager instance represents an extended persistence context. If the EntityManagerFactory is JTA-enabled, then you have to explicitly enlist the EntityManager instance within a transaction by calling the EntityManager.joinTransaction( ) method. If you do not enlist the EntityManager within the JTA transaction, then changes you make to your entities are not synchronized with the database.
FlushModeTypeçš„å«ä¹?br>
FlushModeType默认为AUTO模å¼åQŒå½“为AUTOæ—Óž¼Œåœ¨ä¸€ä¸ªæŸ¥è¯¢è¢«æ‰§è¡Œå‰ï¼Œä¼?x¨¬)自动将å˜åŒ–æäº¤åˆ°æ•°æ®åº“ä¸ï¼ŒåŒ™°ƒç”¨flush()æ–ÒŽ(gu¨©)³•。但是调用find()或getreference()æ–ÒŽ(gu¨©)³•æ—Óž¼Œòq¶ä¸ä¼?x¨¬)执行自动æäº¤ã€‚当为COMMITæ¨¡å¼æ—Óž¼Œä»…仅在事务æäº¤æ—¶åQŒä¼š(x¨¬)ž®†å˜åŒ–æäº¤åˆ°æ•°æ®åº“ä¸ã€?br>
EJB3ä¸çš„实体注解规范å‚è§å¦‚下链接
http://wiki.redsaga.com/confluence/display/HART/Home

]]>