http://blog.csdn.net/yidamr/article/details/8755401
hibernate是开源的,用于封装数据访问层的组件,称为:数据访问层框架(持久层框架)
写一个入门案例,体现hibernate的工作方式!明白hibernate作用及其程序结构!
例子:用Hibernate实现增删查改案例
环境:
IDE工具:Myeclipse ,mysql
所需jar包:
hibernate的jar:
mysql所需jar(程序用到mysql数据库):
mysql-connector-java-5.1.6-bin.jar
步骤:
1.创建一个web项目
2.导入jar包
3.建数据库和表文件
4.建hibernate和数据库的关联配置文件hibernate.cfg.xml
5.建立和数据库关联的POJO类User.java
6.建立数据库和User.java关联的配置文件User.hbm.xml
7.在hibernate.cfg.xml中关联映射文件
8.写测试类(TestHibernate)
项目最后截图:
开始:
1.创建一个项目
还是截图,创建的项目名称为HibernateSpExa
2.导入所需jar包
导入所需jar包到项目的lib文件夹下(或者通过Build Path导入也可,这里需要hibernate和Mysql的jar包)
3.建数据库和表文件
在WebRoot下面建立db.sql文件,在里面建立下图所示内容,并关联Mysql运行建立数据库和表
4.建hibernate和数据库的关联配置文件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">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库连接信息 -->
- <property name="connection.url">
- jdbc:mysql://localhost:3306/test
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <!-- hibernate配置 -->
- <!-- 方言配置,用于配置对哪个的SQL语句 -->
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <!-- 将Sql打印到控制台,一般用于数据库调优 -->
- <property name="show_sql">true</property>
- <!-- 打印出的SQL语句以缩进的形式打印出来 -->
- <property name="format_sql">true</property>
- </session-factory>
- </hibernate-configuration>
5.建立和数据库关联的POJO类User.java
POJO类
- package com.TodayMZ.hiber.po;
- public class User {
- private Integer id;
- private String loginName;
- private String password;
- private String name;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getLoginName() {
- return loginName;
- }
- public void setLoginName(String loginName) {
- this.loginName = loginName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
6.建立数据库和User.java关联的配置文件User.hbm.xml
配置User.java与数据库字段关联的字段
- <?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.TodayMZ.hiber.po.User" table="t_user">
- <id name="id" type="integer" column="t_id">
- <generator class="identity"></generator>
- </id>
- <property name="loginName" type="string" column="t_login_name">
- </property>
- <property name="password" type="string" column="t_password">
- </property>
- <property name="name" type="string" column="t_name">
- </property>
- </class>
- </hibernate-mapping>
7.在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">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库连接信息 -->
- <property name="connection.url">
- jdbc:mysql://localhost:3306/test
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <!-- hibernate配置 -->
- <!-- 方言配置,用于配置对哪个的SQL语句 -->
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <!-- 将Sql打印到控制台,一般用于数据库调优 -->
- <property name="show_sql">true</property>
- <!-- 打印出的SQL语句以缩进的形式打印出来 -->
- <property name="format_sql">true</property>
- <!-- 在配置文件中关联映射文件 -->
- <mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
8.写测试类(TestHibernate)
测试类主要用于测试hibernate的增删查改功能!
hibernate封装了SQL语句,只需要调用hibernate的API就可以实现增删查改,比SQL语句简便
增加save方法:- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setLoginName("todayMZ");
- user.setName("today");
- user.setPassword("1234");
- Configuration conf=new Configuration();/*调用HibernateAPI,装载Hibernate配置文件*/
- conf.configure();/*装载默认配置文件,所过指定则装载conf.configure(new File("abc.xml"););*/
- SessionFactory factory=conf.buildSessionFactory();/*创建SessionFactory*/
- Session session=factory.openSession(); /*创建Session*/
- Transaction tx=session.getTransaction();/*获取事物*/
- tx.begin(); /*开启事物*/
- session.save(user);/*插入数据*/
- tx.commit(); /*提交事物*/
- session.close();/*关闭事物*/
- }
- }
更改Update方法:
- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setId(1);
- user.setLoginName("todayMZ2");
- user.setName("today2");
- user.setPassword("12345");
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- session.update(user);/*更改*/
- tx.commit();
- session.close();
- }
- }
查询Query方法:
- package com.TodayMZ.hiber.test;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- //查询语句
- Query query=session.createQuery("from User");
- List<User> userList=query.list();
- for(User user :userList){
- System.out.println(user.getId()+","+user.getLoginName()+","
- +user.getName()+","+user.getPassword());
- }
- tx.commit();
- session.close();
- }
- }
删除delete方法:
- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setId(1);
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- session.delete(user);/*删除*/
- tx.commit();
- session.close();
- }
- }
在Testhibernate类右键选择Run As ---->JUnit Test,控制台就会打印出当前执行的SQL语句和运行结果!
that's OK!
----------------------------------------我是分割线-------------------------------------------------
文章适合初学者,都是基础知识(高手请绕道),给出了一个hibernate的执行基本结构。
给自己看,也给刚接触的人儿看!
转载请说明出处:http://blog.csdn.net/todaymz/article/details/8755401