1、用JDBC进行数据库操作时:
查询数据库中的一条user记录:
(1)首先通过sql查询出一条记录
(2)User user=new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
......
向数据库中插入一条user记录
(1)写sql:sql="insert into user(name,age) values(?,?)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setInt(2,user.getAge());
.....
以上可以看出用jdbc时都是将数据"解封装"然后在"封装"
现在有一些框架----ORM(Object Relation Mapping对象关系映射)可以简化上面的操作;
hibernate就是其中的一种ORM框架。
2、hibernate的使用:
(1)导入jar包
(2)创建hibernate的配置文件如:(hibernate.cfg.xml)
(3)创建orm映射文件如:(User.hbm.xml)
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>
<!--指定方言,告诉hibernate操作的是什么数据库-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/hibernatedemo
</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="com/lid/hibernate/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
User.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 package="com.lid.hibernate.domain">
<class name="User">
<id name="id">
<generator class="native" />
</id>
<property name="name">
</property>
<property name="birthday">
</property>
</class>
</hibernate-mapping>
3、JDBC 获取Connection对象:
public class DatabaseConnection{
private static final String DBDRIVEDR="org.gjt.mm.mysql.Driver";
private static final String DBURL="jdbc:mysql://localhost:3306/test";
private static final String DBUSERNAME="root";
private static final String DBPASSWORD="123";
private Connection conn=null;
public DatabaseConnection() throws Exception{
Class.forName(DBDRIVEDR);
conn=DriverManager.getConnection(DBURL,DBUSERNAME,DBPASSWORD);
}
//得到数据库的连接
public Connection getConnection() throws Exception{
return this.conn;
}
//关闭连接
public void close() throws Exception{
if(conn!=null){
conn.close();
}
}
}
4、用hibernate操作数据库:
public static void main(String[] args){
Configaration cfg=new Configuration();
cfg.configure();
SessionFactory sf=cfg.buildSessionFactory();
Session s=sf.openSession();
//JDBC的提交时自动的,而hibernate必须人为开启
Transaction tx=s.beginTransaction();
//因为是测试,此次认为定义一个User对象,
//其实该对象在实际应用中通过参数的方式传入的
User user=new User();
user.setName("lid");
user.setAge("20")
s.save(user);
tx.commit();
s.close();
}
ps:SessionFactory 类似于JDBC中的DriverManager,而Session就
类似于JDBC中的Connection;
通过对比可以发现使用hibernate操作至少省去了解封装的操作如下:
.....
ps.setString(1,user.getName());
ps.setInt(2,user.getAge());
.....
这些操作。
注意:有些时候用hibernate时没有提交,数据库里也有数据了
这是我们应该看看我们用的数据库是什么引擎,有的引擎是
不支持事物的,所以即使不提交也会有数据;而有的引擎则是
支持事物的(ENGINE=InnoDB),如果没有提交,则会将插入的事物
回滚,这样数据就相当于没有插入进去。
5、Hibernate的映射文件
用于向Hibernate提供关于将对象持久化到关系数据库中的信息.
hibernate学习笔记01----hibernate介绍
最新推荐文章于 2018-03-26 20:19:06 发布