`
liu_jiaqiang
  • 浏览: 20685 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pring + hibernate+ C3P0+MYSQL

    博客分类:
  • java
 
阅读更多
1) applicationContext.xml

---------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
<!-- 引入参数配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>jdbc.properties</value>
   </list>
  </property>
</bean>

<!-- 配置数据源  -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass"><value>${jdbc.driverClass}</value></property>
  <property name="jdbcUrl"><value>${jdbc.url}</value></property>
  <property name="user"><value>${jdbc.user}</value></property>
  <property name="password"><value>${jdbc.password}</value></property>
  <property name="initialPoolSize"><value>${jdbc.initialPoolSize}</value></property>
  <property name="minPoolSize"><value>${jdbc.minPoolSize}</value></property>
  <property name="maxPoolSize"><value>${jdbc.maxPoolSize}</value></property>
</bean>

<!-- spring Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">true</prop>
    <prop key="hibernate.jdbc.fetch_size">80</prop>
    <prop key="hibernate.jdbc.batch_size">35</prop>
   </props>
  </property>
  <property name="mappingResources">
   <list>       
    <value>com/spring/demo/bean/mapping/Book.hbm.xml</value>                                               
   </list>
  </property>
</bean>

<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="sessionFactory" />
  </property>
</bean>

<!-- 事务代理拦截器的配置 -->
<bean id="baseTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
   <ref bean="transactionManager" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
</bean>

<bean id="hibernate_BookDao" class="com.spring.demo.dao.Hibernate_BookDao" >
  <property name="sessionFactory">
   <ref bean="sessionFactory"/>
  </property>
</bean>

<bean id="hibernate_BookManager" parent="baseTransactionProxy">
  <property name="target">
   <bean class="com.spring.demo.manager.Hibernate_BookManager">
    <property name="dao">
     <ref bean="hibernate_BookDao"/>
    </property>
   </bean>
  </property>
</bean>

</beans>

---------------------

(2) jdbc.properties
## 这个事连接mysql数据库的具体参数配置,
## 楼主要根据自己的数据来配置,不可直接使用
---------------------

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/springdemo?useUnicode=true&characterEncoding=utf-8

jdbc.user=root
jdbc.password=root
jdbc.initialPoolSize=1
jdbc.minPoolSize=1
jdbc.maxPoolSize=10

---------------------

说明:applicationContext.xml 应用了jdbc.properties文件

,我自己测试,没有问题,而且是spring配置式事务的。

需要JAR包

spring.jar
c3p0.jar
mysql.jar
cglib.jar
asm.jar
antlr.jar
hibernate3.jar
jta.jar
dom4j.jar
commons-collections.jar
commons-logging.jar

-----------

Hibernate_BookDao.java

--------------

package com.spring.demo.dao;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.spring.demo.bean.Book;

/**
*
* @author wangyudong
*
*/
public class Hibernate_BookDao extends HibernateDaoSupport {

/**
  * 添加一本书
  * @param book
  */
public void insertBook(Book book){
  this.getHibernateTemplate().save(book);
}

/**
  * 修改一本书
  * @param book
  */
public void updateBook(Book book){
  this.getHibernateTemplate().update(book);
}

/**
  * 根据ID来删除一本书
  * @param id
  */
public void deleteBook(Integer id){
  Book book = new Book();
  book.setId(id);
  this.getHibernateTemplate().delete(book);
}

/**
  * 根据ID来查询书对象
  * @param id
  * @return
  */
public Book selectBookById(Integer id){
  String hql = "from Book b where b.id=?";
  Object[] params = new Object[]{id};
  List list = this.getHibernateTemplate().find(hql, params );
 
  if(list!=null && list.size()>0){
   return (Book)list.get(0);
  }
  return null ;
}

/**
  * 根据书名来查询相关书记录列表
  * @param name
  * @return
  */
public List selectBookByName(String name){
 
  String hql = "from Book b where b.name like ?";
  Object[] params = new Object[]{"%"+name+"%"};
  return this.getHibernateTemplate().find(hql, params);
}

}

--------------

(2) Hibernate_BookManager.java

---------------

package com.spring.demo.manager;

import java.util.List;

import com.spring.demo.bean.Book;
import com.spring.demo.dao.Hibernate_BookDao;

public class Hibernate_BookManager {

private Hibernate_BookDao dao ;

/**
  * 批量添加书本,如果列表长度超过3,就抛出异常
  * @param books
  */
public void insertBooks(List books){
 
  for(int i=0 ; i<books.size() ;i++){
   if(i>2){
    throw new RuntimeException("中断事务异常,当列表长度大于3的时候故意抛出,看看事务是否回滚");
   }
   Book book = (Book)books.get(i);
   dao.insertBook(book);
  }
}

/**
  * 添加一本书
  * @param book
  */
public void insertBook(Book book){
  this.dao.insertBook(book);
}

/**
  * 修改一本书
  * @param book
  */
public void updateBook(Book book){
  this.dao.updateBook(book);
}

/**
  * 根据ID来删除一本书
  * @param id
  */
public void deleteBook(Integer id){
  this.dao.deleteBook(id);
}

/**
  * 根据ID来查询书对象
  * @param id
  * @return
  */
public Book selectBookById(Integer id){
  return this.dao.selectBookById(id);
}

/**
  * 根据书名来查询相关书记录列表
  * @param name
  * @return
  */
public List selectBookByName(String name){
  return this.dao.selectBookByName(name);
}

// getter and setter //
public Hibernate_BookDao getDao() {
  return dao;
}

public void setDao(Hibernate_BookDao dao) {
  this.dao = dao;
}
}

---------------

(3)Book.java

--------------
package com.spring.demo.bean;

import java.io.Serializable;

/*

DROP TABLE IF EXISTS book ;

CREATE TABLE book(
id int(11) NOT NULL auto_increment COMMENT 'primary key',
    name varchar(60) default NULL COMMENT 'book name',                            
    PRIMARY KEY  (`id`)                                                        
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='my book table';

*/

public class Book implements Serializable {

public Book(){}

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

/**
  * ID
  */
private Integer id ;

/**
  * 书名
  */
private String name ;

// getter and setter
public Integer getId() {
  return id;
}

public void setId(Integer id) {
  this.id = id;
}

public String getName() {
  return name;
}

public void setName(String name) {
  this.name = name;
}

}
--------------

(4)Book.hbm.xml
---------------
<?xml version="1.0" encoding="utf-8"?>
<!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.spring.demo.bean.Book" table="BOOK" >
        <id name="id" type="integer" length="11">
            <column name="id" />
            <generator class="identity" />
        </id>
      
        <property name="name" column="NAME" type="string" length="60" ></property>
      
    </class>
</hibernate-mapping>
---------------

#mysql的造表语句,指定了数据库springdemo#
---------------------
MYSQL 的BOOK 表创建语句

CREATE DATABASE IF NOT EXISTS springdemo;

USE springdemo;

DROP TABLE IF EXISTS book ;

CREATE TABLE book(
id int(11) NOT NULL auto_increment COMMENT 'primary key',
    name varchar(60) default NULL COMMENT 'book name',                            
    PRIMARY KEY  (`id`)                                                        
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='my book table';

---------------------

下面是我的测试方法:
===========

package com.spring.demo;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.demo.bean.Book;
import com.spring.demo.manager.Hibernate_BookManager;

public class HibernateDemo {

/**
  * @param args
  */
public static void main(String[] args) {
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml") ;
 
  Hibernate_BookManager manager = (Hibernate_BookManager)context.getBean("hibernate_BookManager");
 
  List books = new ArrayList();

books.add(new Book("book_01"));
  books.add(new Book("book_02"));
  books.add(new Book("book_03"));
  books.add(new Book("book_04"));
 
  manager.insertBooks(books);
 
  System.out.println("OK");

}

}
分享到:
评论

相关推荐

    Struts+Hibernate的一个好用分页实例

    ### Struts+Hibernate 分页实例详解 #### 一、引言 在Web开发中,分页是提升用户体验的重要手段之一。对于大型应用而言,合理的分页处理不仅能减轻服务器压力,还能提高系统的响应速度。本文将详细介绍如何利用...

    PyQt5 + MySQL简单示例

    在本示例中,我们将探讨如何使用Python的GUI库PyQt5与MySQL数据库进行交互。PyQt5是一个强大的工具,允许开发人员创建丰富的图形用户界面,而MySQL则是一种广泛使用的开源关系型数据库管理系统。结合两者,我们可以...

    MySQL+8.0+OCP+1Z0-908

    1Z0-908则是MySQL 8.0 OCP认证考试的官方编号,考生需要通过这一考试才能获得官方认证。 针对给定文件信息,我们可以整理出以下知识点: 1. MySQL代理账户的创建和授权:在MySQL中可以创建代理账户,并将其与实际...

    在windows下激活Airprint无线打印 AirPrint+Activator

    AirPrint无线打印技术当前仅面向Mac开放,并且只能在几款惠普打印机上实现。没有这些AirPrint兼容打印机的可以借助一款名为Printopia的Mac程序激活AirPrint功能,那么Windows用户呢?想在PC上启用AirPrint的Windows...

    MySQL学习笔记+python接收传感器+python将数据写入MySQL+PHP连接本地MySQL

    `print(data)` Python将数据写入MySQL 在 Python 中,可以使用pymysql库来将数据写入 MySQL。pymysql库提供了 MySQL 的接口函数,可以用来连接 MySQL 服务器、执行 SQL 语句。例如: `import pymysql` `conn = ...

    jsp+mysql制作简单的留言板(1)

    ### jsp+mysql 制作简单的留言板知识点解析 #### 一、项目背景与目标功能 在本案例中,我们探讨如何使用JSP结合MySQL数据库来创建一个简单的留言板系统。留言板的主要功能包括允许访客留言及分页查看留言,并且提供...

    简单的php+mysql管理系统 毕业设计

    【简单的PHP+MySQL管理系统毕业设计】是一份基于Web的后台管理系统的实现,主要涉及了PHP编程语言和MySQL数据库技术的应用。这个系统旨在提供一个基础但完整的功能,用于管理和存储数据,是初学者学习Web开发和...

    php+mysql网站

    2. **MySQL数据库管理** - 数据库创建:使用`CREATE DATABASE`命令创建新的数据库。 - 表结构:通过`CREATE TABLE`定义表结构,包含字段名、数据类型、约束等。 - 插入数据:`INSERT INTO`语句用于向表中插入新...

    linux 下 jdk+tomcat+mysql 的环境搭建

    ### Linux下JDK、Tomcat、MySQL环境搭建详解 #### 一、JDK在Linux下的安装与配置 **1.1 下载与放置** - 首先,下载适合Linux系统的JDK安装包,通常为`.bin`或`.tar.gz`格式。 - 将下载好的JDK安装文件放到 `/opt`...

    PHP+MySQL网络开发从入门到精通源码

    【PHP+MySQL网络开发从入门到精通源码】是一份全面深入学习PHP和MySQL数据库开发的资源集合。这个源码包旨在帮助初学者快速掌握这两种技术,并逐步提升为专业开发者。PHP是一种广泛使用的服务器端脚本语言,尤其适合...

    PrintScreen++(增加显示光标)

    printscreen -截屏并保存到剪切板(不截光标) printscreen+alt -截图当前窗口并保存到剪切板(不截光标) 可通过mspaint.exe粘贴获得剪切板图像 本程序增强键盘printscreen按键,使之能显示光标。 增强状态: ...

    Python基础.py文件代码 print+购买苹果题目+输出个人信息+qq账号密码+格式化输出练习

    在"print+购买苹果题目"中,可能涉及到一个简单的计算问题,例如用户购买苹果的数量、价格和总价的计算。这可以锻炼初学者对变量的使用、基本数学运算以及`print`函数的掌握。 "输出个人信息"可能是指编写一段程序...

    PHP+MySQL学习文档

    在PHP中,你可以使用`echo`和`print`来输出内容,它们的区别在于`echo`比`print`稍微快一点,且可以同时输出多个值。PHP有多种修饰符,如`static`用于声明静态变量,`final`用于创建不可重写的方法或类,`const`用于...

    MySQL+Apache+PHP配置安装与测试

    print($row[0] . "," . $row[1] . " "); } $dbh = null; ?&gt; ``` 访问网站 http://localhost/chaxun.php,出现如下界面则访问成功。 注意 需要注意的是,在访问数据库时,需要赋予远程访问权限,使用以下命令...

    python+mysql+navicat安装

    - 输入 `print("Hello, World!")` 来测试 Python 是否正确安装。如果输出了 "Hello, World!",则表示 Python 已成功安装。 ### MySQL 安装详解 #### 二、MySQL 安装步骤: 1. **运行安装程序**: - 双击 MySQL ...

    android连接远程数据库PHP+MYSQL

    print(json_encode($output)); mysql_close(); ?&gt; ``` 这段代码首先建立与数据库的连接,然后执行SQL查询,获取所有满足条件的数据,并将其编码为JSON格式返回。 ### 3. Android客户端的实现 Android客户端需要...

    Python+Mysql windows环境搭建

    print(row) # 关闭游标和连接 cursor.close() conn.close() ``` 请注意替换上述代码中的`your_username`、`your_password`、`your_database`和`your_table`为实际的MySQL数据库信息。这段代码展示了如何连接到...

    1小时学会:php+mysql+易语言.zip

    - 函数:自定义函数、内置函数,如print_r、var_dump用于调试。 - 文件操作:读取、写入、移动文件,以及目录操作。 - 数据库交互:通过MySQLi或PDO扩展与MySQL数据库进行连接和查询。 2. MySQL: MySQL是一个...

Global site tag (gtag.js) - Google Analytics