`

maven搭建WEB项目5 - 添加hibernate

阅读更多
    项目使用Hibernate作为数据持久层
    1、添加Hibernate的依赖,在pom.xml中添加
   
<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<exclusions>
				<exclusion>
					<artifactId>cglib</artifactId>
					<groupId>cglib</groupId>
				</exclusion>
				<exclusion>
					<artifactId>dom4j</artifactId>
					<groupId>dom4j</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.hibernate.javax.persistence</groupId>
			<artifactId>hibernate-jpa-2.0-api</artifactId>
		</dependency>

    此项不仅添加了Hibernate还添中对JPA的支持

    2、配置Spring对Hibernate的支持,添加的配置文件要在web.xml中能够引用到
    添加jdbc.properties,用于保存数据库连接以及Hibernate各项参数
#dataSource for oracle
oracle.driverClass=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:TRAIN
oracle.username=train
oracle.password=train
oracle.maxIdle=1
oracle.maxActive=10
oracle.dialect=pine.core.hibernate.dialect.Oracle10gDialect
oracle.show_sql=true
oracle.generateDdl=false
oracle.hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
oracle.hibernate.cache.use_second_level_cache=false
oracle.hibernate.max_fetch_depth=2


    添加applicationContext-resources.xml,注册datasource对象
<?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:tx="http://www.springframework.org/schema/tx" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:jee="http://www.springframework.org/schema/jee" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:security="http://www.springframework.org/schema/security"
    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   
	   http://www.springframework.org/schema/context 
	   http://www.springframework.org/schema/context/spring-context-3.0.xsd   
	   http://www.springframework.org/schema/jee 
	   http://www.springframework.org/schema/jee/spring-jee-3.0.xsd	   
	   http://www.springframework.org/schema/lang
	   http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
	   http://www.springframework.org/schema/security 
	   http://www.springframework.org/schema/security/spring-security-3.0.xsd">
	
	
	<!-- PropertyConfigurer for the dataSource -->
	<context:property-placeholder location="classpath:jdbc.properties"  />
	
	<bean id="OracleDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${oracle.driverClass}" />
		<property name="url" value="${oracle.url}" />
		<property name="username" value="${oracle.username}" />
		<property name="password" value="${oracle.password}" />
		<property name="maxIdle" value="${oracle.maxIdle}" />
		<property name="maxActive" value="${oracle.maxActive}" />
	</bean>
</beans>


    添加applicationContext-common.xml
<?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:tx="http://www.springframework.org/schema/tx" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:jee="http://www.springframework.org/schema/jee" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:security="http://www.springframework.org/schema/security"
    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   
	   http://www.springframework.org/schema/context 
	   http://www.springframework.org/schema/context/spring-context-3.0.xsd   
	   http://www.springframework.org/schema/jee 
	   http://www.springframework.org/schema/jee/spring-jee-3.0.xsd	   
	   http://www.springframework.org/schema/lang
	   http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
	   http://www.springframework.org/schema/security 
	   http://www.springframework.org/schema/security/spring-security-3.0.xsd">
	
	<!-- PropertyConfigurer for the dataSource -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	
	<context:annotation-config />
	
	<aop:aspectj-autoproxy />

	<tx:annotation-driven transaction-manager="transactionManager" />
	
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="list*" read-only="true" />
            <tx:method name="*" read-only="false" rollback-for="RollBackAppException"/>
        </tx:attributes>
    </tx:advice>

	<aop:config>
        <aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Service.*(..))" order="2"/>
    </aop:config>
    
	<context:component-scan base-package="pine.web.dao"/>
	<context:component-scan base-package="pine.web.service"/>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="OracleDS" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${oracle.dialect}</prop>
				<prop key="hibernate.cache.use_second_level_cache">${oracle.hibernate.cache.use_second_level_cache}</prop>
				<prop key="hibernate.cache.provider_class">${oracle.hibernate.cache.provider_class}</prop>
				<prop key="hibernate.max_fetch_depth">${oracle.hibernate.max_fetch_depth}</prop>
				<prop key="hibernate.show_sql">${oracle.show_sql}</prop>
			</props>
		</property>
		<property name="packagesToScan">
			<list>
				<value>pine.web.model</value>
			</list>
		</property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
</beans>


    3、创建表
create table SYS_USER
(
  ID            NUMBER not null primary key,
  USERNAME      VARCHAR2(50),
  PASSWORD      VARCHAR2(50),
  FULLNAME      VARCHAR2(100),
  DEPARTMENT_ID NUMBER
)


    4、创建实体类
@Entity
@Table(name="SYS_USER")
public class User implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_USER")
	@SequenceGenerator(name="SEQ_USER", sequenceName="SEQ_USER")
	private Long id;
	
	private String username;
	
	private String password;
	
	private String fullname;
        
        ......(各种get,set方法)
}


    5、创建Dao
    创建系统基础DAO类AbstractHibernateDao
public abstract class AbstractHibernateDao extends HibernateDaoSupport {

	@Resource(name="sessionFactory")
    public void setSuperSessionFactory(SessionFactory sessionFactory){
        super.setSessionFactory(sessionFactory);
    }
}


    创建基础DAO接口,只提供了部分方法
public interface BaseDao<T> {
	
	public void save(T t);
	
	public T get(Serializable id);
	
	public T load(Serializable id);
	
	public void delete(Serializable id);
	
	public void delete(T t);
	
	public void delete(T t, LockMode lockMode);
	
	public void deleteAll(Collection<T> entities);
}


    创建基础DAO接口实现类
public abstract class BaseDaoImpl<T> extends AbstractHibernateDao implements
		BaseDao<T> {
	
	private Logger log = Logger.getLogger(BaseDaoImpl.class);
	
	protected abstract Class<T> getEntityClass();

	public void save(T t) {
		getHibernateTemplate().save(t);
	};
	
	@Override
	public T get(Serializable id) {
		return getHibernateTemplate().get(getEntityClass(), id);
	}
	
	@Override
	public T load(Serializable id) {
		T ob = null;
		try {
			ob = getHibernateTemplate().load(getEntityClass(), id);
		} catch (RuntimeException e) {
			if(log.isDebugEnabled())
				log.debug("can't load entity by primary key", e);
		}
		if (ob == null) 
			return get(id);
		return null;
	}
	
	@Override
	public void delete(Serializable id) {
		T ob = load(id);
		if (ob == null) {
			if(log.isDebugEnabled())
				log.debug("can't delete entity by primary key:"+getEntityClass().getName()+"."+id+",object is not exist!");
			return;
		}
		getHibernateTemplate().delete(ob);
	}
	
	@Override
	public void delete(T t) {
		getHibernateTemplate().delete(t);
	}
	
	@Override
	public void delete(T t, org.hibernate.LockMode lockMode) {
		getHibernateTemplate().delete(t, lockMode);
	}
	
	@Override
	public void deleteAll(Collection<T> entities) {
		getHibernateTemplate().deleteAll(entities);
	}
	
}


    创建UserDao,UserDaoImpl,UserService,UserServiceImpl各种类

  
 @Service("UserService")
public class UserServiceImpl implements UserService {

	@Autowired
	private UserDao userDao;
	
	@Override
	public void save(User user) {
		this.userDao.save(user);
	}
	
	@Override
	public void test() {
		User user = new User();
		user.setId(1L);
		user.setUsername("gmm");
		user.setPassword("admin");
		user.setFullname("龚敏");
		save(user);
	}
}


    5、测试一下
分享到:
评论

相关推荐

    Maven搭建spring_struts2_Hibernate_demo

    Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911

    用Maven搭建Spring+Spring MVC+Hibernate框架

    本篇文章将深入探讨如何使用Maven作为构建工具,在Eclipse环境中搭建一个整合了Spring、Spring MVC和Hibernate的项目。 首先,让我们了解Maven。Maven是Apache开发的一款项目管理和综合工具,它通过一个项目对象...

    maven搭建项目:springmvc+hibernate

    总结,通过Maven搭建Spring MVC+Hibernate项目,我们需要配置Maven的POM文件,设置项目结构,配置Web应用的XML文件,编写实体类、Service、Controller等。这个过程涉及了多个技术栈,包括Maven的依赖管理、Spring ...

    Maven Web基础搭建示例

    本示例将详细介绍如何使用Maven搭建一个基础的Web项目,并解决创建过程中可能出现的报错问题。 ### 一、Maven环境配置 首先,确保你已经安装了Java Development Kit (JDK),因为Maven是基于Java的。接着,下载Maven...

    maven搭建的springmvc+hibernate框架

    1. 创建 Maven 项目,添加 SpringMVC 和 Hibernate 相关的依赖。 2. 配置 SpringMVC:包括 DispatcherServlet、HandlerMapping、HandlerAdapter 等。 3. 配置 Hibernate:设置数据库连接、实体类映射等。 4. 编写 ...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    基于SpringMVC hibernate maven搭建的项目框架

    【标题】"基于SpringMVC Hibernate Maven搭建的项目框架"是一个经典的Java企业级应用开发架构,它整合了三个强大的开源框架,旨在简化开发流程、提高代码质量和可维护性。SpringMVC作为控制层,负责处理HTTP请求并...

    maven搭建SSH项目

    "Maven搭建SSH项目"是一个基础的Java Web开发模板,通过Maven管理项目构建,结合Struts2处理请求,Spring管理依赖和事务,Hibernate进行数据操作。这样的组合可以快速构建出功能完备的应用,并易于维护和扩展。理解...

    Maven项目ssh Struts2+hibernate+Spring+maven框架.zip

    SSH(Struts2、Hibernate、Spring)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。在这个Maven项目中,这三个框架与Maven构建工具一起使用,以实现更好的依赖管理和项目构建流程。下面将详细...

    使用maven搭建的ssm框架

    通过以上步骤,我们就成功地使用Maven搭建了一个基本的SSM框架项目。当然,实际项目中还需要考虑异常处理、安全控制、国际化、日志管理等多个方面,这些都可以通过引入相应的Spring或第三方库来实现。总的来说,SSM...

    Maven+Hibernate+Spring+Spring MVC开发新闻发布系统

    第5课 使用Maven创建web项目 第6课 使用Maven构建多模块项目(一) 第7课 使用Maven构建多模块项目(二) 第8课 使用Nexus搭建Maven私服 第9课 使用Maven管理新闻系统开发-项目简介 第10课 使用Maven管理新闻系统...

    Spring+SpringMVC+Hibernate+Maven框架搭建及配置文件源码

    在"Spring+SpringMVC+Hibernate+Maven框架搭建及配置文件源码"这个项目中,开发者可能已经包含了这些框架的配置文件,例如Spring的applicationContext.xml、SpringMVC的servlet-context.xml、Hibernate的hibernate....

    Maven下搭建Struts2+spring+hibernate框架

    &lt;artifactId&gt;hibernate-core &lt;version&gt;5.x.x.Final &lt;groupId&gt;org.apache.struts &lt;artifactId&gt;struts2-core &lt;version&gt;2.x.x &lt;!-- 其他相关依赖 --&gt; ``` 确保选择合适的版本,以确保各组件之间的兼容性。...

    Jboss7上+maven搭建struts2+spring3+hibernate3完整能运行源码

    Jboss7上+maven搭建struts2+spring3+hibernate3完整能运行工程源码,在tomcat7上运行也成功测试了,注意:我工程文件是用myeclipse2013开发的,你需要导入自己ide的时候,会有兼容性问题:最好阁下是自己新建一个maven...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...

    maven搭建SSH框架源码

    总之,通过Maven搭建SSH框架项目,关键在于正确配置pom.xml文件中的依赖,编写合理的配置文件,以及理解各框架之间的协作机制。这个过程有助于提升开发者对Java Web开发的理解和实践能力。希望提供的源码能对学习者...

    基于Maven 搭建Spring + SpringMVC源码.rar

    在IT行业中,构建Java...通过以上步骤,你将了解如何使用Maven搭建一个整合了Spring和Spring MVC的项目,并能够深入源码进行学习和分析。这个过程有助于提高你的Java Web开发技能,使你更好地掌握这两个强大的框架。

    springmvc5+hibernate5+maven整合项目

    总之,Spring MVC、Hibernate 和 Maven 的整合提供了高效、灵活的开发环境,简化了项目的构建和维护,使得开发人员可以更专注于业务逻辑的实现,而不是基础架构的搭建。通过熟练掌握这三个框架的整合,可以极大地...

    mavenweb项目

    - `&lt;dependencies&gt;`标签用于添加项目依赖,如Servlet API、Spring、Hibernate等。 - `&lt;dependencyManagement&gt;`标签可以统一管理多个模块间的依赖版本。 5. **插件 (Plugins)** - Maven允许扩展其功能,通过使用...

    SpringMVC+Hibernate+Jpa Maven环境搭建

    &lt;artifactId&gt;hibernate-entitymanager &lt;version&gt;5.x.x.Final &lt;groupId&gt;javax.persistence &lt;artifactId&gt;persistence-api &lt;version&gt;1.0.2 &lt;!-- 添加对应的数据库驱动,例如MySQL --&gt; &lt;groupId&gt;mysql ...

Global site tag (gtag.js) - Google Analytics