spring和hibernate的一个整合
来源:互联网 发布:俄罗斯方舟 知乎 编辑:程序博客网 时间:2024/06/15 18:20
整合的这个小案例是采用贫血模式设计的。
com.huxin.patternenemia.domain
package com.huxin.patternenemia.domain;import java.util.Set;public class User {/* * user_id int(3) primary key, user_name varchar(10), user_password varchar(20) */private int userId;private String userName;private String password;private Set News;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Set getNews() {return News;}public void setNews(Set news) {News = news;}}
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.huxin.patternenemia.domain.News" table="t_news"><id name="newsId"><generator class="native"/></id><property name="newsTitle"/><property name="content"/><property name="newsPostDate"/><many-to-one name="user" column="user_id"/><set name="reviews" inverse="true"> <key column="news_id" not-null="true"/> <one-to-many class="com.huxin.patternenemia.domain.Review"/></set></class></hibernate-mapping>
package com.huxin.patternenemia.domain;import java.util.Date;import java.util.Set;public class News {/* * news_id int(3) not null primary key auto_increment, news_title varchar(20) not null, news_content varchar(50), news_postDate Date, fk1_user_ */private int newsId;private String newsTitle;private String content;private Date newsPostDate;private User user;private Set reviews;public int getNewsId() {return newsId;}public void setNewsId(int newsId) {this.newsId = newsId;}public String getNewsTitle() {return newsTitle;}public void setNewsTitle(String newsTitle) {this.newsTitle = newsTitle;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Date getNewsPostDate() {return newsPostDate;}public void setNewsPostDate(Date newsPostDate) {this.newsPostDate = newsPostDate;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}//@Override//public int hashCode() {//return this.getUser().hashCode()+ this.getNewsPostDate().hashCode() * 29;//}//public boolean equals(Object obj) {// if(this == obj){// return true;// }// if(obj!= null && obj.getClass()==News.class){// News news = (News)obj;// return this.getUser().equals(news.getUser()) &&this.getNewsPostDate().equals(news.getNewsPostDate());// }// return false;//}public Set getReviews() {return reviews;}public void setReviews(Set reviews) {this.reviews = reviews;}}
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.huxin.patternenemia.domain.News" table="t_news"><id name="newsId"><generator class="native"/></id><property name="newsTitle"/><property name="content"/><property name="newsPostDate"/><many-to-one name="user" column="user_id"/><set name="reviews" inverse="true"> <key column="news_id" not-null="true"/> <one-to-many class="com.huxin.patternenemia.domain.Review"/></set></class></hibernate-mapping>
package com.huxin.patternenemia.domain;import java.util.Date;public class Review {/* * review_id int(3) primary key, review_content varchar(10), review_reDate Date, fk1_news_id int(3), */private int reviewId;private String reviewContent;private Date reviewReDate; private News news;public int getReviewId() {return reviewId;}public void setReviewId(int reviewId) {this.reviewId = reviewId;}public String getReviewContent() {return reviewContent;}public void setReviewContent(String reviewContent) {this.reviewContent = reviewContent;}public Date getReviewReDate() {return reviewReDate;}public void setReviewReDate(Date reviewReDate) {this.reviewReDate = reviewReDate;}public News getNews() {return news;}public void setNews(News news) {this.news = news;}}
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.huxin.patternenemia.domain.Review" table="t_review"><id name="reviewId"><generator class="native"/></id><property name="reviewContent"/><property name="reviewReDate"/><many-to-one name="news" column="news_id" not-null="true"/></class></hibernate-mapping>
-----------dao就不写了
com.huxin.patternenemia.dao.impl
package com.huxin.patternenemia.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.huxin.patternenemia.dao.UserDao;import com.huxin.patternenemia.domain.User;public class UserDaoImpl extends HibernateDaoSupport implements UserDao {public void addUser(User user) { this.getHibernateTemplate().save(user);}public void deleteUser(int id) { this.getHibernateTemplate().delete(findUserById(id));}public void modifyUser(UserDao user) {this.getHibernateTemplate().update(user);}public User findUserById(int id) {return (User)this.getHibernateTemplate().get(User.class, id);}public List findAllUser() {return this.getHibernateTemplate().find("from User");}}
package com.huxin.patternenemia.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.huxin.patternenemia.dao.NewsDao;import com.huxin.patternenemia.domain.News;public class NewsDaoImpl extends HibernateDaoSupport implements NewsDao {public void addNews(News news) { this.getHibernateTemplate().save(news);}@Overridepublic void deleteNews(int id) { this.getHibernateTemplate().delete(findNewsById(id));}@Overridepublic void modifyNews(News news) {this.getHibernateTemplate().update(news);}@Overridepublic News findNewsById(int id) {return (News)this.getHibernateTemplate().get(News.class,id);}@Overridepublic List findAllNews() {return this.getHibernateTemplate().find("from News");}}
package com.huxin.patternenemia.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.huxin.patternenemia.dao.ReviewDao;import com.huxin.patternenemia.domain.News;import com.huxin.patternenemia.domain.Review;public class ReviewDaoImpl extends HibernateDaoSupport implements ReviewDao {public void addReview(Review review) { this.getHibernateTemplate().save(review);}public void deleteReview(int id) {this.getHibernateTemplate().delete(findReviewById(id));}@Overridepublic void modifyReview(Review review) {this.getHibernateTemplate().update(review);}@Overridepublic Review findReviewById(int id) {return (Review)this.getHibernateTemplate().get(Review.class, id);}@Overridepublic List findAllReview() {return this.getHibernateTemplate().find("from Review");}}
com.huxin.patternenemia.service.impl
package com.huxin.patternenemia.service.impl;import java.util.Date;import com.huxin.patternenemia.dao.NewsDao;import com.huxin.patternenemia.dao.ReviewDao;import com.huxin.patternenemia.dao.UserDao;import com.huxin.patternenemia.domain.News;import com.huxin.patternenemia.domain.Review;import com.huxin.patternenemia.service.Manager;public class ManagerImpl implements Manager {private NewsDao newsDao;private ReviewDao reviewDao;private UserDao userDao;public void setNewsDao(NewsDao newsDao) {this.newsDao = newsDao;}public void setReviewDao(ReviewDao reviewDao) {this.reviewDao = reviewDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void addReview(int id, String content) {News news = newsDao.findNewsById(id);Review review = new Review();review.setNews(news);review.setReviewContent(content);review.setReviewReDate(new Date());reviewDao.addReview(review);System.out.println("添加成功");}}
test-------------------------
package com.huxin.patternenemia.test;import java.util.Date;import java.util.Iterator;import java.util.Set;import junit.framework.TestCase;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.huxin.patternenemia.dao.NewsDao;import com.huxin.patternenemia.dao.ReviewDao;import com.huxin.patternenemia.dao.UserDao;import com.huxin.patternenemia.domain.News;import com.huxin.patternenemia.domain.User;import com.huxin.patternenemia.service.Manager;public class Test extends TestCase { public void addNewsTest(){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-*.xml"); UserDao userDao = ac.getBean("userDao", UserDao.class); User user = new User(); user.setUserName("胡鑫"); user.setPassword("123"); userDao.addUser(user); NewsDao newsDao = ac.getBean("newsDao", NewsDao.class); News news1 = new News(); news1.setNewsTitle("主题一"); news1.setUser(user); news1.setNewsPostDate(new Date()); news1.setContent("内容一"); newsDao.addNews(news1); News news2 = new News(); news2.setNewsTitle("主题二"); news2.setUser(user); news2.setNewsPostDate(new Date()); news2.setContent("内容二"); newsDao.addNews(news2); //Manager manager = ac.getBean("Manager", Manager.class);//manager.addReview(1, "我回复了第一条");// System.out.println("插入成功"); } public void loadTest(){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-*.xml"); UserDao userDao = ac.getBean("userDao", UserDao.class); User user = (User)userDao.findUserById(1); System.out.println(user.getUserName()); for(Iterator i = user.getNews().iterator();i.hasNext();){ News news = (News)i.next(); System.out.println(news.getContent()); } } public void addReviewTest(){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-*.xml"); Manager manager = ac.getBean("manager", Manager.class); manager.addReview(4,"我是主题四的内容"); }}
spring的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="newsDao" class="com.huxin.patternenemia.dao.impl.NewsDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="reviewDao" class="com.huxin.patternenemia.dao.impl.ReviewDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="userDao" class="com.huxin.patternenemia.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="manager" class="com.huxin.patternenemia.service.impl.ManagerImpl"> <property name="userDao" ref="userDao"/> <property name="newsDao" ref="newsDao"/> <property name="reviewDao" ref="reviewDao"/> </bean></beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 配置SessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><!-- 那些类那些方法使用事务 --><aop:config><aop:pointcut id="allManagerMethod" expression="execution(* com.huxin.patternenemia.dao.impl.*.*(..))"/><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/></aop:config><!-- 事务的传播特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="*" propagation="REQUIRED" read-only="true"/></tx:attributes></tx:advice></beans>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db_enemia3</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">system</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.show_sql">true</property><property name="hibernate.hbm2ddl.auto">update</property><!-- 这句话已经没有什么用了,在集成的时候. 主要是使用一个session的变量,防止开启多个session <property name="hibernate.current_session_context_class">thread</property>--><mapping resource="com/huxin/patternenemia/domain/News.hbm.xml"/><mapping resource="com/huxin/patternenemia/domain/Review.hbm.xml"/><mapping resource="com/huxin/patternenemia/domain/User.hbm.xml"/></session-factory></hibernate-configuration>
- spring和hibernate的一个整合
- 整合Struts2,Hibernate和Spring的一个简单例子
- hibernate和spring的整合
- spring 和hibernate的整合
- hibernate和spring的整合
- Spring和Hibernate的整合
- Hibernate和Spring的整合
- spring和hibernate的整合
- Hibernate和Spring的整合
- Spring和Hibernate的整合
- Spring和Hibernate的整合
- Hibernate、Spring和Spring MVC的整合
- spring整合hibernate的一个配置文件
- 整合Spring和Hibernate
- Hibernate和Spring整合
- spring和hibernate整合
- Spring和Hibernate整合
- Spring和Hibernate整合
- AudioservicesPlaySystemSound 用法
- Android的字符编码转换问题,Unicode,GB2312,UTF8等
- AfxEnableControlContainer()
- C#串口通信总结
- 串口通信中获得可用串口使用combobox控件显示
- spring和hibernate的一个整合
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
- 析构函数的使用
- 如何将C/C++程序转译成Delphi(五)
- 【rzxt】如何修改Win7资源管理器默认路径
- PAT1005. Spell It Right (20)
- oracle 查看用户表数目,表大小,视图数目等
- 【rzxt】玩转Win7文件库 让文件"消失"
- WebGL自学课程(14):WebGL使用Mipmap纹理