国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
spring整合JPA總結(jié)

1、定義實(shí)體類

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity // 表明該類 (RtoUser ) 為一個(gè)實(shí)體類,如果寫成@Entity(RtoUserTable)它對(duì)應(yīng)數(shù)據(jù)庫中的表表名是RtoUserTable;

            //寫成@Entity則默認(rèn)對(duì)應(yīng)表RtoUser,和類名稱相同
public class RtoUser implements Serializable{

 /**
  *
  */
 private static final long serialVersionUID = 1L;

 @Id //指定userName為主鍵
 private String userName;  
 private String password;

 @Column(length = 30)
 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 @Column(length = 30)
 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

}
2.定義Dao接口

import java.util.List;

/**

* 該接口定義操作數(shù)據(jù)庫的抽象方法,方法體由具體類去實(shí)現(xiàn)

*/

public interface BaseDao {
    public abstract void save (Object object);
    public abstract void update (Object object);
    public abstract Object find(Object object);
    public abstract List findByCondition(String conditions);
    public abstract void deleteByCondition(String conditions);
    public abstract void delete(Object object);
}

3.定義具體類

import java.util.List;

import java.util.List;

import org.springframework.orm.jpa.support.JpaDaoSupport;
import org.springframework.transaction.annotation.Transactional;

import com.huahuan.devicemanager.common.entity.RtoUser;
import com.huahuan.devicemanager.server.dao.BaseDao;

@Transactional
@SuppressWarnings("deprecation")
public class RtoUserDaoImpl extends JpaDaoSupport  implements BaseDao { //實(shí)體的具體Dao類必須繼承JpaDaoSupport類

 @Override
 public void save(Object object) {
  object = (RtoUser) object;

  this.getJpaTemplate().persist(object);

 }

 @Override
 public void update(Object object) {
  RtoUser rtoUser = (RtoUser) object;
  this.getJpaTemplate().merge(rtoUser);
 }

 @Override
 public Object find(Object object) {
   RtoUser rtoUser = (RtoUser) object;
   rtoUser = this.getJpaTemplate().find(rtoUser.getClass(),
    rtoUser.getUserName());
  return rtoUser;
 }

 @Override
 @SuppressWarnings("unchecked")
 public List<RtoUser> findByCondition(String conditions) {
  return null;
 }

 @Override
 public void deleteByCondition(String conditions) {

 }

 @Override
 public void delete(Object object) {
  object = (RtoUser) object;
  this.getJpaTemplate().remove(this.getJpaTemplate().merge(object));
 }

 }
4.persistence.xml配置文件

注:在java應(yīng)用中,該文件一定要方法哦src/META-INF/下

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence

         

 <!-- 持久化單元 name:持久化單元的名稱,集成時(shí)會(huì)在spring配置文件中使用 transaction-type:事務(wù)類型 RESOURCE_LOCAL或JTA,j2ee環(huán)境下默認(rèn)是jta,j2se環(huán)境下默認(rèn)是RESOURCE_LOCAL -->

 <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">

  <!-- 持久化技術(shù)提供商 Hibernate -->
  <provider>org.hibernate.ejb.HibernatePersistence</provider>

  <!-- 實(shí)體類 -->
  <!-- 用戶實(shí)體:必須在此定義實(shí)體類,否則加載時(shí)會(huì)包實(shí)體未定義異常 -->
  <class>com.huahuan.devicemanager.common.entity.RtoUser</class>

  <!-- 具體產(chǎn)品的配置信息 -->
  <properties>
   <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
   <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />

   <property name="hibernate.connection.username" value="root" />

   <property name="hibernate.connection.password" value="admin" />

   <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test" />

   <property name="hibernate.show_sql" value="true" />

   <!--hibernate.hbm2ddl.auto屬性,當(dāng)值為create時(shí),每次啟動(dòng)應(yīng)用就會(huì)刪除舊表結(jié)構(gòu),重新創(chuàng)建最新的表結(jié)構(gòu),數(shù)據(jù)會(huì)丟失;

        當(dāng)值為update時(shí),每次啟動(dòng)應(yīng)用,如果實(shí)體類有變化的話,就會(huì)在原來表結(jié)構(gòu)的基礎(chǔ)上新建,原始數(shù)據(jù)不會(huì)丟失;

   -->

   <property name="hibernate.hbm2ddl.auto" value="update" />

  </properties>
 </persistence-unit>
</persistence>

5.applicationContext.xml配置

j2se應(yīng)用放到src/下

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="

 <bean id="rtoUserDao"
  class="com.huahuan.devicemanager.server.dao.impl.RtoUserDaoImpl">
  <property name="jpaTemplate" ref="jpaTemplate" /><!-- 為實(shí)體Dao注入jpaTemplate實(shí)例,該配置必須有-->
 </bean>

 <!--實(shí)體管理器工廠,spring整合jpa的入口,不能自定義數(shù)據(jù)源 jpa:是持久化單元的名稱 -->
 <bean id="lemfb"
  class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
  <property

name="persistenceUnitName" value="jpa"></property>

<!--持久化單元名稱,其中jpa是在persistence.xml中定義的;-->

<!--另外注意property屬性中value和ref的區(qū)別,個(gè)人理解:

value是給屬性賦一個(gè)默認(rèn)值,如<property

name="persistenceUnitName" value="jpa" />的意思是,讓persistenceUnitName的值為jpa;而ref是指將ref指定的對(duì)象實(shí)例賦值給對(duì)應(yīng)的屬性,ref指定的對(duì)象實(shí)例在配置文件中通過bean標(biāo)簽定義-->
 </bean>

 <!-- 配置事務(wù)管理器 JpaTransactionManager -->
 <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="lemfb"></property>
 </bean>

<!-- 定義JpaTemplate --> 

<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
  <property name="entityManagerFactory" ref="lemfb"/>
 </bean>
 <!-- 配置注解@Transactional的驅(qū)動(dòng),如果要想使用該注解,必須有tx:annotation-driven配置 -->
 <tx:annotation-driven transaction-manager="transactionManager"/>

 <!-- 編寫通知 -->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
   <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT" />

   <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" />

   <tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT"
    read-only="true" />

   <tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT"
    read-only="true" />

   <tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT"
    read-only="true" />

   <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT" />

  </tx:attributes>
 </tx:advice>

 <!-- 編寫aop配置(通知切入點(diǎn) advisor) -->

<!-- spring進(jìn)行事務(wù)管理時(shí),有proxy-target-class屬性,該屬性作用為定義事務(wù)dao是接口還是類,默認(rèn)為false,即事物dao為接口;

      如果dao為實(shí)現(xiàn)類時(shí)就會(huì)報(bào)“Failed to convert property value of type '$Proxy15”或“'$ProxyXX' can not be casted to XXX.java ”,此時(shí)將 proxy-target-class設(shè)置為true就可以了 --> 

<aop:config proxy-target-class="true">
  <aop:advisor pointcut="execution(* *..*Service.*(..))"
   advice-ref="txAdvice" />
 </aop:config>
</beans>
6.測(cè)試類

 

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.huahuan.devicemanager.common.entity.RtoUser;
import com.huahuan.devicemanager.server.dao.BaseDao;

public class SpringJpaTest {
 public static void main(String[] args){
  ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  BaseDao baseDao = (BaseDao) ac.getBean("rtoUserDao");
  RtoUser rtoUser = new RtoUser();
  rtoUser.setUserName("at6");
  rtoUser.setPassword("1");
  while(true){
   if(null == baseDao.find(rtoUser)){
    baseDao.save(rtoUser);
    rtoUser = (RtoUser) baseDao.find(rtoUser);
   } else {
    rtoUser = (RtoUser) baseDao.find(rtoUser);
   }
   System.out.println("用戶名:"+rtoUser.getUserName()+"\n"+"密     碼:"+rtoUser.getPassword());
  }
 }
}

打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring Framework之最佳實(shí)踐二
spring Transaction Manager和hibernate session 吐血經(jīng)驗(yàn)談
struts2 hibernate spring配置管理(二)——DAO層(一)
微服務(wù)SpringDATA筆記
將Spring和Hibernate 與WAS一起使用
Struts Spring Hibernate整合筆記_TerrySpace
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服