Hibernate 3.2支持JPA註解,Spring集成JPA是可選的.
下面是Spring集成JPA的一個例子.
實體類MyUser,使用JPA註解實現到資料庫表myUser的映射,如下所示:
package org.shirdrn.entity; import java.util.Date; import javax.persistence.Column; @Entity private Long id; @Id public void setId(Long id) { @Column(name="userName") public void setUserName(String userName) { @Column(name="password") public void setPassword(String password) { @Column(name="gender") public void setGender(String gender) { @Column(name="age") public void setAge(Integer age) { @Column(name="addr") public void setAddr(String addr) { @Column(name="email") public void setEmail(String email) { @Transient public void setBirthYear(Integer age) { |
其中,birthYear不是資料庫中的欄位,使用JPA的@Transient註解,在映射的時候,會忽略掉該成員.
持久層DAO介面如下:
package org.shirdrn.dao; import java.util.List; import org.shirdrn.entity.MyUser; @Transactional |
這裡,使用了JPA註解,聲明事務.
DAO實現類,如下所示:
package org.shirdrn.dao.impl; import java.util.List; import org.shirdrn.dao.MyUserDAO; public class MyUserDAOImpl extends JpaDaoSupport implements MyUserDAO { public void createMyUser(MyUser myUser) { public void deleteMyUser(MyUser myUser) { public void updateMyUser(MyUser myUser) { @SuppressWarnings("unchecked") @SuppressWarnings("unchecked") |
因為繼承了JpaDaoSupport,索引需要獲取一個JpaTemplate來實現訪問資料庫,在Spring的配置文件中要注入一個org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.
Spring的配置文件applicationContext.xml的內容如下所示:
<?xmlversion="1.0"encoding="UTF-8"?>
|
<?xmlversion="1.0"encoding="UTF-8"?>
|
接著,對增刪改查操作進行測試,如下所示:
插入記錄:
packageorg.shirdrn.test; importorg.shirdrn.dao.MyUserDAO; publicclassTestCreateMyUser{ publicstaticvoidmain(String[]args){ |
packageorg.shirdrn.test; importorg.shirdrn.dao.MyUserDAO; publicclassTestDeleteMyUser{ |
packageorg.shirdrn.test; importorg.shirdrn.dao.MyUserDAO; publicclassTestUpdateMyUser{ |
packageorg.shirdrn.test; importjava.util.List; importorg.shirdrn.dao.MyUserDAO; publicclassTestQueryAllMyUser{ |
心得總結
感覺自己對JPA的理解還是不怎麼深刻.
JpaTemplate提供的一些操作的方法,感覺不是很快就能理解的.
似乎使用JpaTemplate沒有使用HibernateTemplate方便,尤其是在執行插入、修改、刪除記錄的時候.修改和刪除記錄需要先把資料庫中對應的記錄載入出來,才能執行修改和刪除操作.
查詢資料庫倒是很容易,因為根本不需要事務,如果沒有事務,插入、修改和刪除操作就不能實現.
在Spring中使用JPA,感覺代價比較大,使用起來不容易,出錯不容易調試.
比較好的地方就是.如果資料庫中的表很多,無需編寫大量的XML文件去映射,只需要從POJO中就可以非常直觀地看到各個表之間的關係.
[火星人 ] 在Spring框架中集成JPA實例已經有791次圍觀