Spring + Hibernate 项目配置

希望使用最小的例子,驱动出spring + hibernate集成项目的搭建, 该项目是在spring suit tool 上进行创建,使用其自带图形界面功能编辑bean的xml文件

同时在使用sts中发现,其中有一些小功能方便初学者使用,比如对于spring元素的图形化显示等,下面列出三点:

1. 创建一个spring的bean 配置文件

2. 使用图形界面添加namespace等(选项卡中有下面还有beans/context/tx/...)

3. 工程管理中查看spring相关的元素

可以看到spring对于bean的管理,并且给出不同bean的扫描来源

目录结构如下:

maven的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>Hibernate.Demo</groupId>
  <artifactId>springHibernate</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>springHibernate</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.10.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.7.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.35</version>
    </dependency>
  </dependencies>
</project>

1. 测试用例开始

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:config/databaseContext.xml"})
public class TestHibernate {

	@Autowired
	private OrderDao orderdao;

	@Test
	public void testSaveOrder() {
		Order order = new Order("dfp");
		orderdao.save(order);
		System.out.println(order.toString());
	}
}

1. OrderDao的实现

@Repository
@Transactional
public class OrderDao {
	@Autowired
	private SessionFactory sessionFactory;

	public void save(Order order){
		getSession().save(order);
	}

	private Session getSession() {
		return sessionFactory.openSession();
	}
}

2. Order模型的建立

package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "orders")
public class Order
{
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	private String name;
	public Order() {
		// TODO Auto-generated constructor stub
	}

	public Order(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Order [id=" + id + ", name=" + name + "]";
	}
}

简单的注意事项:

1. 需要默认的构造函数

2. 如果希望通过类的方式创建数据库中的表需要使用hibernate.hbm2ddl进行配置(在配置hibernate sessionfactory项目中)

下面进行配置:

一、配置思路:

1. 全局配置

测试用例使用到了OfferDao,使用@AutoWired获取的,所以要在test使用的classpath:config/databaseContext.xml中配置好context scan

2. 配置bean

主要需要的bean是sessionFactory,同时sessionFactory需要依赖于dataSource

其中dataSource的配置可以通过写一个JdbcTemplate jdbc = new JdbcTemplate(dataSource)执行sql语句来验证

二、具体配置

1. 加载bean文件

(1) 自动扫描功能和注解功能

目前用来扫描offerDao

<context:component-scan base-package="/database"></context:component-scan>
    <context:annotation-config></context:annotation-config>
    

下面是具体的Hibernate需要依赖的类的配置

(2)dataSource —— sessionFactory依赖dataSource

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="username" value="${jdbc.username}"></property>
    </bean>

${}可以通过jdbc.properties 进行配置

<context:property-placeholder location="config/jdbc.properties" />

(2) sessionFactory

dao使用该bean获取session,有session进行与数据库的交互, 同事注意update选项和show_sql选项在实现过程中的状态变化(默认应该是关闭的)

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="packagesToScan" value="model"></property> --- 扫描的Entity的路径
        <property name="hibernateProperties">
               <props>
                   <prop key="hibernate.show_sql">true</prop>  <!--  ———是否显示命令执行 -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop> <!-- ——— 是否同步更新数据库中的表 -->
              </props>
        </property>
    </bean>

3.配置事务管理

    <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    <tx:annotation-driven />

运行完用例,就可以看到数据库里面已经建立好了表,同时可以查看到已经添加的条目了。

查询命令:

show tables;

select * from orders;

时间: 2024-10-22 18:20:06

Spring + Hibernate 项目配置的相关文章

Spring + Hibernate 项目配置(java class版本)

1. 写测试用例 说明:使用spring的原因我可以轻松配置Bean方便进行依赖注入 其中HibernateConfig是bean的配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=HibernateConfig.class) public class TestMessage { @Autowired private SessionFactory sessionFactory; @Test pub

Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置

Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservletmysql 在公司一直没有什么机会直接折腾SSH“原生态”的SSH当今比较流行的轻量级的框架,用着公司的框架也是郁闷异常,今天没事整整原来用过的一个项目的配置,发现就算是自己曾经用过的东西,如果较长时间不返过去重新学习,许多你半熟不熟的知识就是异常陌生.下面贴上我的一些配置,暂且权当备份吧. web

Spring+hibernate事务配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:task="http://www.springframework.org/schema/task"    xmlns:xsi="http://www.w3.org/2001/XMLSchem

【转】Spring+Hibernate+EHcache配置(一)

大量数据流动是web应用性能问题常见的原因,而缓存被广泛的用于优化数据库应用.cache被设计为通过保存从数据库里load的数据来减少应用和数据库之间的数据流动.数据库访问只有当检索的数据不在cache里可用时才必要.hibernate可以用两种不同的对象缓存:first-level cache 和 second-level cache.first-level cache和Session对象关联,而second-level cache是和Session Factory对象关联.        

spring+struts+hibernate项目配置

applicationContext.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:context="http://www.

spring+hibernate注解配置实例

简单的spring3.2.9和hibernate3的集成配置,有demo供下载.shTest下载 第一步 jdbc.properties配置 driverClassName=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\:3306/shtest username=root password=123456 prototypeCount=1 maxActive=100 houseKeepingSleepTime=60000 minimumCon

Spring + hibernate + JPA 配置

最近对hibernate的JPA实现比较感兴趣,在此记录下配置方法,备查. 先上maven依赖包配置,这里使用的是spring3.1.2和hibernate3.6.0 <dependencies>                 <dependency>             <groupId>org.hibernate</groupId>             <artifactId>hibernate-entitymanager</

基于Maven的Spring Boot项目配置

Maven项目都是基于pom.xml进行配置的. 这里我们参考Spring Boot的官方文档: https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#getting-started-introducing-spring-boot 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns=&qu

SSH(Struts+spring+hibernate)配置

1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter(过滤器) 2)applicationContext.xml 配置service.dao.bean 配置Struts的每个action为bean,并指明scope="prototype" 3)Struts.xml 配置每个action,并且class=bean的id 2.spring和hi