hibernate学习笔记01----hibernate介绍

来源:互联网 发布:软件培训老师 编辑:程序博客网 时间:2024/06/02 04:14
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提供关于将对象持久化到关系数据库中的信息.


原创粉丝点击