使用Maven搭建S2SH工程详解(四):在struts2和spring3项目中加入hibernate3.6框架
Maven在struts2和spring3项目中加入hibernate3.6框架
一),pom.xml加入hibernate的依赖和spring的事务和jdbc依赖,
以及mysql的依赖。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
<!-- hibernate,支持 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
二),jpa的配置,增加src\main\resources\META-INF\persistence.xml:我们把hibernate作为jpa的实现。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="s2sh">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/test" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.useUnicode" value="true" />
<property name="hibernate.characterEncoding" value="utf8" />
</properties>
</persistence-unit>
</persistence>
三),增加spring配置文件src\main\resources\applicationContext-jpa.xml,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean
/>
<bean id="entityManagerFactory"
value="s2sh" />
</bean>
<bean id="transactionManager" ref="entityManagerFactory" />
</bean>
</beans>
并且import上面的配置文件到applicationContext.xml,添加事务管理器。
<tx:annotation-driven transaction-manager="transactionManager" />
<import resource="applicationContext-jpa.xml" />
四),修改Book.java,添加注释以及id属性,时期成为entity。
package com.watson.s2sh.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Book {
private Integer id;
private String group;
private String price;
private String name;
private String author;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="book_group")
public String getGroup() {
return group;
}
......
}
五),增加BookDao类,BookService调用BookDao来保存Book对象。
package com.watson.s2sh.dao;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.watson.s2sh.domain.Book;
@Transactional
public class BookDao {
@PersistenceContext
private EntityManager em;
@Transactional(propagation = Propagation.REQUIRED)
public void save(Book o){
em.persist(o);
}
@Transactional(propagation = Propagation.REQUIRED)
public Book get(Object id){
return em.find(Book.class, id);
}
}
在BookService中定义BookDao,配置BookDao Bean到spring配置文件中,
并且把BookDao注入到BookService。
package com.watson.s2sh.service;
import com.watson.s2sh.dao.BookDao;
import com.watson.s2sh.domain.Book;
public class BookService {
private BookDao bookDao;
public void saveBook(Book book) {
System.out.print("BookService:saveBook");
System.out.print(book.getName());
bookDao.save(book);
}
public BookDao getBookDao() {
return bookDao;
}
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
<bean id="bookService" ref="bookDao"></property>
</bean>
<bean id="bookDao" class="com.watson.s2sh.dao.BookDao"></bean>
六)创建数据库表
mysql> create table Book (id int auto_increment primary key,author varchar(60),
book_group varchar(60), name varchar(60), price varchar(60));
六),启动s2sh,workspace\s2sh>mvn jetty:run,
http://localhost:7002/s2sh/openBookForm
输入内容提交,然后成功进入到bookSaveResult.jsp页面。
七),数据成功保存在数据库中。
mysql> select * from book;
+----+--------+------------+------+-------+
| id | author | book_group | name | price |
+----+--------+------------+------+-------+
| 1 | a | a | a | a |
+----+--------+------------+------+-------+
1 row in set (0.00 sec)
mysql>
长沙办公家具公司赞助程序设计技术博客主地址:http://www.cs163.net/wordpress
本博客由长沙办公家具公司赞助:http://www.cs163.net