.par 封裝實體類 + persistence.xml 定義資料源、方言、快取等,支援多上下文隔離部署。
@Entity @Table(name="PERSON")
public class Person implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO) private int id;
private String name;
@Temporal(TemporalType.DATE) private Date dateOfBirth;
// getter/setter
}
@OneToOne private Resume resume;
@ManyToOne @JoinColumn(name="ADDR_ID") private Address addr;
@OneToMany private List cards; // CreditCard 端 @ManyToOne private Person person;
容器自動維護外鍵,雙向關聯需 mappedBy 指定擁有方。
@Entity @Inheritance @DiscriminatorColumn(name="TYPE") @DiscriminatorValue("C")
public class Consultant extends Person { private double rate; }
預設單表策略,TYPE 區分子類。
<persistence-unit name="cal">
<jta-data-source>java:/DefaultDS</jta-data-source>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.cache.provider_class" value="org.jboss.ejb3.entity.TreeCacheProviderHook"/>
</persistence-unit>
persist(newEntity):新增find(Class, pk) / createQuery("from Person").getResultList():查詢UPDATE,無需額外 API。merge(detached):將脫管實體納管 (反序列化、遠程傳遞後)。flush() / @FlushMode(NEVER):手動/延遲同步。@TransactionAttribute(REQUIRES_NEW) 方法級事務,容器管理事務邊界,EntityManager 自動參與。