java操作数据库的演进jdbc-datasource-hibernate-spring
2011-05-04 20:30
681 查看
java访问数据库最直接的方式便是JDBC,这里我们以Mysql数据库为例,来谈谈Java访问数据库上的演进,先建立一个数据库hib_test,然后建立一个用户表t_user,有三个字段,id,name,password:
接着建立与表对应的域对象TUser:
这要的操作便是insert和select
1.jdbc带c3p0数据源操作
2.hibernate数据库操作,其中两个配置文件如下:
TUser.hbm.xml:
hibernate.cfg.xml:
3。通过spring的bean容器,和HibernateDaoSupport 与 HibernateTemplate操作数据库,配置文件如下:
applicationContext.xml:
UserDao(进程HibernateDaoSupport):
create table `hib_test`.`t_user`( `id` BIGINT not null auto_increment, `name` VARCHAR(20) not null unique, `password` VARCHAR(20) not null, primary key (`id`) ); create unique index `PRIMARY` on `hib_test`.`t_user`(`id`); create unique index `name` on `hib_test`.`t_user`(`name`);
接着建立与表对应的域对象TUser:
package org.fn.dao; /** * TUser entity. @author MyEclipse Persistence Tools */ public class TUser implements java.io.Serializable { // Fields /** * */ private static final long serialVersionUID = 1L; private Long id; private String name; private String password; // Constructors /** default constructor */ public TUser() { } /** full constructor */ public TUser(String name, String password) { this.name = name; this.password = password; } // Property accessors public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
这要的操作便是insert和select
1.jdbc带c3p0数据源操作
package org.fn; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DataSourceTest { /** * @param args * @throws PropertyVetoException * @throws SQLException */ public static void main(String[] args) throws PropertyVetoException, SQLException { // TODO Auto-generated method stub ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass("com.mysql.jdbc.Driver" ); //loads the jdbc driver cpds.setJdbcUrl("jdbc:mysql://localhost:3306/hib_test" ); cpds.setUser("root"); cpds.setPassword("root"); DataSource dataSource = cpds; Connection conn = dataSource.getConnection(); PreparedStatement pstmt = conn.prepareStatement("select id, name, password from t_user"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getLong(1) + " : " + rs.getString(2) + " : " + rs.getString(3)); } rs.close(); pstmt.close(); conn.close(); } }
2.hibernate数据库操作,其中两个配置文件如下:
TUser.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"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="org.fn.dao.TUser" table="t_user" catalog="hib_test"> <id name="id" type="java.lang.Long"> <column name="id" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="20" not-null="true" unique="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="20" not-null="true" /> </property> </class> </hibernate-mapping>
hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/hib_test </property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="c3p0.min_size">1</property> <mapping resource="org/fn/dao/TUser.hbm.xml" /> </session-factory> </hibernate-configuration>
package org.fn; import java.util.List; import hibernate.HibernateSessionFactory; import org.fn.dao.TUser; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; public class TUserOp { public static void main(String[] args) { //save(); find(); } /** * */ public static void find() { Session session = HibernateSessionFactory.getSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from TUser"); List<TUser> list = query.list(); for (TUser user : list) { System.out.println(user.getId() + " : " + user.getName() + " : " + user.getPassword()); } tx.commit(); session.close(); } public static void save() { Session session = HibernateSessionFactory.getSession(); Transaction tx = session.beginTransaction(); TUser user = new TUser(); user.setName("fnszb7"); user.setPassword("1234"); Long id = (Long) session.save(user); System.out.println(id); user.setPassword("4321"); tx.commit(); session.close(); } }
3。通过spring的bean容器,和HibernateDaoSupport 与 HibernateTemplate操作数据库,配置文件如下:
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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- <property name="configLocation" value="file:src/hibernate.cfg.xml"> --> <property name="configLocation" value="hibernate.cfg.xml"> </property> </bean> </beans>
UserDao(进程HibernateDaoSupport):
package org.fn; import java.util.List; import org.hibernate.SessionFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class UserDao extends HibernateDaoSupport { public List find(String queryString) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); SessionFactory sf = (SessionFactory) ctx.getBean("sessionFactory"); super.setSessionFactory(sf); HibernateTemplate ht = super.getHibernateTemplate(); return ht.find(queryString); } }
package org.fn; import java.util.List; import org.fn.dao.TUser; public class SpringOp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); // SessionFactory sf = (SessionFactory) ctx.getBean("sessionFactory"); // HibernateTemplate ht = new HibernateTemplate(sf); UserDao userDao = new UserDao(); List<TUser> list = userDao.find("from TUser"); for (TUser user : list) { System.out.println(user.getId() + " : " + user.getName() + " : " + user.getPassword()); } } }
相关文章推荐
- 在spring配置DataSource数据源进行数据库操作及spring结合hibernate操作
- day03-spring与数据库操作的框架解析即dataSource的获取(JDBC)、使用spring中已经有的事务进行JDBC操作
- JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。
- spring04 数据库操作 spring+jdbc/hibernate 及其声明式事务处理
- Spring @Transactional (一) 加强版 标签: springexception数据库jdbcjavahibernate 2010-10-21 17:54 38545人阅读 评论(
- spring结合hibernate的数据库操作
- Java程序员从笨鸟到菜鸟之(七十八)细谈Spring(七)spring之JDBC访问数据库及配置详解
- JavaWeb:用JDBC操作数据库
- java-jdbc访问数据库,原生操作数据库
- java里面jdbc操作数据库
- Spring配置错误java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataS
- Java操作数据库的三种方式(原生jdbc,JdbcTemplate,数据层框架)
- [Java] JDBC 01 初步 , java 连接 数据库的基本六步操作
- java中简述使用JDBC完成数据库操作的基本步骤。
- JDBC——java操作数据库的一系列接口
- java-JDBC-ResultSet详解(java数据库操作)
- Sqlite_操作数据库_JDBC连接Java与数据库
- spring framwor操作数据库示例spring-jdbc
- java数据库编程---jdbc2.0操作
- SimpleJdbc: 用于简化数据库操作的Java库