使用JPA 註解的Hibernate

來源:互聯網
上載者:User

   這三天都在搞使用JPA註解替代Hibernate的對應檔,因為包缺少或衝突的問題,總是不成功,今天終於搞定了,特地寫下來分享一下(^-^)。

    開發工具:myeclipse7.5

    開發環境:JDK1.6,MySQL5.0
    使用到架構:spring+Hibernate
    (1)使用到的hibernate庫類:hibernate-distribution-3.3.1.GA-dist.zip(在解壓縮的hibernate-distribution-3.3.1.GA目錄中,把hibernate.jar,和librequired下的所用jar包引進到我們項目的lib目錄下)、slf4j- log4j12.jar、Hibernate3.2 Annotations& Entity Manager  以及 Hibernate3.2 Core Liabaries。

           添加連結mysql資料庫所需要的包:commons-dbcp.jar、commons-pool.jar、mysql-connector5.1.6.jar

    (2)添加對spring的支援。

    (3)使用Mysql建立資料庫(我建立的資料庫名為xlob,其中一個表名為user_table(userId,userName))。

    (4)建立一個bean(User)

 

package beans;</p><p>import javax.persistence.Column;<br />import javax.persistence.Entity;<br />import javax.persistence.GeneratedValue;<br />import javax.persistence.GenerationType;<br />import javax.persistence.Id;</p><p>@Entity(name="user_table")<br />public class User {</p><p> @Id<br />@GeneratedValue(strategy=GenerationType.IDENTITY)<br />int userId=0;<br /> @Column(name="userName")<br /> String userName="";<br />/**<br /> * @return the userId<br /> */<br />public int getUserId() {<br />return userId;<br />}<br />/**<br /> * @return the userName<br /> */<br />public String getUserName() {<br />return userName;<br />}<br />/**<br /> * @param userId the userId to set<br /> */<br />public void setUserId(int userId) {<br />this.userId = userId;<br />}<br />/**<br /> * @param userName the userName to set<br /> */<br />public void setUserName(String userName) {<br />this.userName = userName;<br />}<br />}

     

 (5)建立dao(UserDao)

 

import java.util.List;</p><p>import org.springframework.orm.hibernate3.support.HibernateDaoSupport;</p><p>import beans.User;</p><p>public class UserDao extends HibernateDaoSupport {</p><p>public UserDao() {<br />// TODO Auto-generated constructor stub<br />}<br />public User getUser(int id){<br />return (User)getHibernateTemplate().get(User.class, id);</p><p>}<br />public void saveUser(User user) {<br />getHibernateTemplate().save(user);</p><p>}<br />public List<User>getUserByName(String name){<br />return getHibernateTemplate().find("from beans.User where user_name=? ",name);<br />}<br />}

    

(6)編寫設定檔(為了可以重用,分成四個檔案)

  • mysqlconfig.properties(外部屬性檔案,配置連結參數)

mysql.driverClassName=com.mysql.jdbc.Driver<br />mysql.url=jdbc:mysql://localhost:3306/xlob<br />mysql.username=root<br />mysql.password=root<br />mysql.mappingDirectoryLocations=conf/<br />mysql.dialect=org.hibernate.dialect.MySQLDialect

  •  mysql-config.xmll(配置資料來源、事物以)

<bean</p><p>class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><br /><property name="locations"><br /><list><br /><value>classpath:conf/mysqlconfig.properties<br /></value><br /></list><br /></property><br /><property name="fileEncoding" value="utf-8"></property><br /></bean></p><p><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><br /><property name="driverClassName" value="${mysql.driverClassName}"></property><br /><property name="url" value="${mysql.url}"></property><br /><property name="username" value="${mysql.username}"></property><br /><property name="password" value="${mysql.username}"></property><br /></bean></p><p><bean id="sessionFactory"<br />class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><br /><property name="dataSource" ref="dataSource"></property><br /><property name="annotatedClasses"><br /><list><br /><value>beans.User</value><br /></list><br /></property></p><p></bean></p><p><bean id="hibernatejdbcTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><br /><property name="sessionFactory" ref="sessionFactory"></property><br /></bean></p><p>

  •     tx-config.xml(事物設計)

</p><p><bean id="transactionManager"<br />class="org.springframework.orm.hibernate3.HibernateTransactionManager"><br /><property name="sessionFactory" ref="sessionFactory" /><br /></bean><br /><bean id="txBase"<br />class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"<br />lazy-init="true" abstract="true"><br /><!-- 目標為類而不是介面 --><br /><property name="proxyTargetClass" value="true"></property><br /><!-- 配置交易管理員 --><br /><property name="transactionManager" ref="transactionManager" /><br /><!-- 配置事務屬性 --><br /><property name="transactionAttributes"><br /><props><br /><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><br /><prop key="load*">PROPAGATION_REQUIRED,readOnly</prop><br /><prop key="save*">PROPAGATION_REQUIRED</prop><br /></props><br /></property><br /></bean></p><p>

  • beans-config.xml(beans的配置)

<bean id="userDao" class="dao.UserDao"><br /> <property name="hibernateTemplate" ref="hibernatejdbcTemplate"></property><br /> </bean>

 

   (7)最後一步,檢驗正確性

  

 

package test;</p><p>import org.springframework.context.ApplicationContext;<br />import org.springframework.context.support.ClassPathXmlApplicationContext;</p><p>import dao.UserDao;</p><p>import beans.User;</p><p>import junit.framework.TestCase;</p><p>public class UserTest extends TestCase {<br />String[] conf={"conf/beans-config.xml","conf/mysql-config.xml","conf/tx-config.xml"};<br /> ApplicationContext tcx=new ClassPathXmlApplicationContext(conf);<br /> UserDao userDao=(UserDao)tcx.getBean("userDao");</p><p>public void testGetUser() {<br />User user=userDao.getUser(1);</p><p>assertEquals("gaoqicheng",user.getUserName());<br />}

 

      其實,如果添加到hibernate支援包正確,相信剩下的就會比較容易,很快就可以建立成功,如果缺少了必須的包或添加了相衝突的包,後果就像本人,花費了幾天的精力去探索,希望可以幫到各位!

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.