首先我们看看hibernate手动配置步骤

(这个了解一点就可以了,以后是不会自己全部手动配置的)

1、    创建WEB项目

2       下载hibernate-release-4.3.11.Final.zip,并解压。

3       将hibernate必须的包加入lib

4        打开hibernate-release-4.3.11.Final\lib\required文件夹,导入jar文件:

5       打开hibernate-release-4.3.11.Final\lib\optional\ehcache文件夹,导入jar文件:

6         打开hibernate-release-4.3.11.Final\lib\optional\c3p0文件夹,导入jar文件:

7    配置hibernate.cfg.xml     打开hibernate-release-4.3.11.Final\project\etc文件夹,选择hibernate.cfg.xml文件并   复制到src下。

8     打开hibernate.cfg.xml文件,并设置数据库连接

如:

  1. <!DOCTYPE hibernate-configuration PUBLIC
  2. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  4.  
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 用于配置数据库连接信息 -->
  8. <!-- 定义Hibernate访问数据库的方言 -->
  9. <property name="dialect">
  10. org.hibernate.dialect.MySQLDialect
  11. </property>
  12. <!-- 定义数据库的连接信息 -->
  13. <property name="connection.url">
  14. jdbc:mysql://127.0.0.1:3306/j2ee?characterEncoding=utf-8
  15. </property>
  16. <!-- 定义连接用户名及密码 -->
  17. <property name="connection.username">root</property>
  18. <property name="connection.password">root</property>
  19. <!-- 定义连接驱动 -->
  20. <property name="connection.driver_class">
  21. com.mysql.jdbc.Driver
  22. </property>
  23.  
  24. <!-- 要求Hibernate执行SQL标准 -->
  25. <property name="format_sql">true</property>
  26. <!-- 要求Hibernate在控制台显示SQL -->
  27. <property name="show_sql">true</property>
  28.  
  29. <!-- 数据库基本配置完毕,继续配置数据源(DataSource) -->
  30. <!-- 配置C3P0数据源信息 -->
  31. <property name="hibernate.connection.provider_class">
  32. org.hibernate.c3p0.internal.C3P0ConnectionProvider
  33. </property>
  34.  
  35. <!-- 指定连接池的最大连接量 -->
  36. <property name="hibernate.c3p0.max_size">30</property>
  37. <!-- 指定连接池的最小连接量 -->
  38. <property name="hibernate.c3p0.min_size">1</property>
  39. <!-- 指定连接池内连接的超时时长 -->
  40. <property name="hibernate.c3p0.timeout">5000</property>
  41. <!-- 指定连接池最大可以缓存多少个PreparedStatement -->
  42. <property name="hibernate.c3p0.max_statements">100</property>
  43. <!-- 指定连接池检查线程间隔多长时间,检测一次池内的所有连接的对象是否超时 -->
  44. <property name="hibernate.c3p0.idle_test_period">3000</property>
  45. <!-- 当连接池里面的连接用完的之后,C3p0数据源可以重新获取的连接数 -->
  46. <property name="hibernate.c3p0.acquire_increment">5</property>
  47. <!-- 以上就是C3P0数据源的一个配置 -->
  48.  
  49. <!-- 添加"对象.hbm.xml"文件 -->
  50. <mapping resource="com/cy/xmls/UserBean.hbm.xml"/>
  51.  
  52. </session-factory>
  53. </hibernate-configuration>

9   创建数据库表,并封装实体Bean与XXX.hbm.xml文件,

如:

  1. package com.cy.beans;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class UserBean implements Serializable {
  6.  
  7. private static final long serialVersionUID = 1L;
  8.  
  9. private Integer id;
  10. private String userName;
  11. private String password;
  12. public UserBean() {
  13. super();
  14. }
  15.  
  16. public Integer getId() {
  17. return id;
  18. }
  19.  
  20. public void setId(Integer id) {
  21. this.id = id;
  22. }
  23.  
  24. public String getUserName() {
  25. return userName;
  26. }
  27. public void setUserName(String userName) {
  28. this.userName = userName;
  29. }
  30. public String getPassword() {
  31. return password;
  32. }
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36. @Override
  37. public String toString() {
  38. return "UserBean [id=" + id + ", userName=" + userName + ", password="
  39. + password + "]";
  40. }
  41.  
  42. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping>
  7.  
  8. <class name="com.cy.beans.UserBean" table="t_user" catalog="j2ee"> <!-- catalog数据库 -->
  9.  
  10. <id name="id" type="int"><!-- 此行的ID,为对象的属性ID -->
  11. <column name="id"></column><!-- 此行的ID,为表字段ID -->
  12. <generator class="identity"></generator><!-- 给ID指定生成策略 -->
  13. </id>
  14.  
  15. <property name="userName" type="java.lang.String">
  16. <column name="userName"></column>
  17. </property>
  18.  
  19. <property name="password" type="java.lang.String">
  20. <column name="pwd"></column>
  21. </property>
  22.  
  23. </class>
  24.  
  25. </hibernate-mapping>

10 hibernate如何CRUD  获取Session对象:

如:

  1. package com.cy.tools;
  2.  
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  5. import org.hibernate.cfg.Configuration;
  6. import org.hibernate.service.ServiceRegistry;
  7.  
  8. /**
  9. * session工厂的工具类
  10. * @author acer
  11. *
  12. */
  13.  
  14. public class HibernateUtils {
  15.  
  16. private static Configuration cfg;
  17. private static SessionFactory sessionFactory;
  18. private static ServiceRegistry serviceRegistry;
  19.  
  20. static{
  21.  
  22. cfg = new Configuration().configure();
  23. System.out.println(cfg);
  24. serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
  25. System.out.println(serviceRegistry);
  26. sessionFactory = cfg.buildSessionFactory(serviceRegistry);
  27.  
  28. }
  29.  
  30. public static SessionFactory getSessionFactory(){
  31. return sessionFactory;
  32. }
  33.  
  34. }

今天主要学习的内容就是hibernate的增删改查;

我们以一个t_user表为例:

先把框架写好:

看UserDaoImpl里的代码:

  1. package com.cy.dao.impl;
  2.  
  3. import java.io.Serializable;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import org.hibernate.Query;
  8. import org.hibernate.Session;
  9. import org.hibernate.Transaction;
  10.  
  11. import com.cy.beans.UserBean;
  12. import com.cy.dao.IUserDao;
  13. import com.cy.tools.HibernateUtils;
  14.  
  15. public class UserDaoImpl implements IUserDao {
  16.  
  17. @Override
  18. public void saveUser(UserBean ub) {
  19. //获取Session
  20. Session session = null;
  21. Transaction tx = null;
  22. try {
  23. session = HibernateUtils.getSessionFactory().openSession();
  24. tx = session.beginTransaction();//开启事务
  25. session.save(ub);//将user对象交给Session管理
  26. tx.commit();//提交
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. tx.rollback();//回滚
  30. }finally{
  31. session.close();//关闭
  32. }
  33. }
  34.  
  35. @Override
  36. public void updateUser(UserBean ub) {
  37. Session session = null;
  38. Transaction tx = null;
  39. try {
  40. session=HibernateUtils.getSessionFactory().openSession();
  41. tx=session.beginTransaction();
  42. session.update(ub);
  43. tx.commit();
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. tx.rollback();
  47. }finally{
  48. session.close();
  49. }
  50.  
  51. }
  52.  
  53. @Override
  54. public void deleteUser(UserBean ub) {
  55. Session session = null;
  56. Transaction tx = null;
  57. try {
  58. session=HibernateUtils.getSessionFactory().openSession();
  59. tx=session.beginTransaction();
  60. session.delete(ub);
  61. tx.commit();
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. tx.rollback();
  65. }finally{
  66. session.close();
  67. }
  68.  
  69. }
  70.  
  71. @Override
  72. public List<?> findUser(String sql, Map<String, Object> pram) {
  73. Session session = null;
  74. Transaction tx = null;
  75. List<?> list=null;
  76. try {
  77. session=HibernateUtils.getSessionFactory().openSession();
  78. tx=session.beginTransaction();
  79. Query query= session.createQuery(sql).setCacheable(true);//查询
  80. String userName=pram.get("userName").toString();
  81. String password=pram.get("password").toString();
  82. query.setString("userName", '%'+userName+'%');
  83. query.setString("password",'%'+password+'%');
  84. list=query.list();
  85. tx.commit();
  86.  
  87. } catch (Exception e) {
  88. e.printStackTrace();
  89. tx.rollback();
  90. }finally{
  91. session.close();
  92. }
  93. return list;
  94. }
  95.  
  96. @Override
  97. public UserBean getUser(Class<?> cls, Serializable pk) {
  98. Session session = null;
  99. Transaction tx = null;
  100. UserBean user=null;
  101.  
  102. try {
  103. session=HibernateUtils.getSessionFactory().openSession();
  104. tx=session.beginTransaction();
  105.  
  106. user=(UserBean)session.get(cls, pk);
  107.  
  108. tx.commit();
  109. } catch (Exception e) {
  110. e.printStackTrace();
  111. tx.rollback();
  112. }finally{
  113. session.close();
  114. }
  115.  
  116. return user;
  117. }
  118.  
  119. }

看UserServerImpl的代码:

  1. package com.cy.server.impl;
  2.  
  3. import java.io.Serializable;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import com.cy.beans.UserBean;
  8. import com.cy.dao.IUserDao;
  9. import com.cy.dao.impl.UserDaoImpl;
  10. import com.cy.server.IUserServer;
  11.  
  12. public class UserServerImpl implements IUserServer{
  13.  
  14. IUserDao iusUserDao=new UserDaoImpl();
  15. /**
  16. * 添加
  17. */
  18. @Override
  19. public void saveUser(UserBean ub) {
  20. iusUserDao.saveUser(ub);
  21.  
  22. }
  23.  
  24. /**
  25. * 修改
  26. */
  27. @Override
  28. public void updateUser(UserBean ub) {
  29. iusUserDao.updateUser(ub);
  30.  
  31. }
  32.  
  33. /**
  34. * 删除
  35. */
  36. @Override
  37. public void deleteUser(Integer id) {
  38. //先查询
  39. UserBean ub=iusUserDao.getUser(UserBean.class,id);
  40. //后删除
  41. if(ub!=null){
  42. iusUserDao.deleteUser(ub);
  43. }
  44.  
  45. }
  46.  
  47. /**
  48. * 数据集合
  49. */
  50. @Override
  51. public List<?> findUser(Map<String,Object>pram) {
  52. //模糊查询
  53. String hql="from UserBean where 1=1 and userName like :userName and password like :password";
  54. return iusUserDao.findUser(hql, pram);
  55. }
  56.  
  57. /**
  58. * 查询
  59. */
  60. @Override
  61. public UserBean getUser(Class<?> cls, Serializable pk) {
  62. return iusUserDao.getUser(cls, pk);
  63. }
  64.  
  65. }

TestAction的代码:

  1. package com.cy.action;
  2.  
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import com.cy.beans.UserBean;
  8. import com.cy.server.IUserServer;
  9. import com.cy.server.impl.UserServerImpl;
  10.  
  11. public class TestAction {
  12.  
  13. public static void main(String[] args) {
  14. // saveUser();
  15. // delete();
  16. // update();
  17. // queryUserBean();
  18. }
  19.  
  20. /**
  21. *测试 根据条件来查询数据
  22. */
  23. /*private static void queryUserBean() {
  24. Map<String,Object> map=new HashMap<String, Object>();
  25. IUserServer ius=new UserServerImpl();
  26. //模糊查询
  27. map.put("userName", "kitty");
  28. map.put("password", "kitty");
  29. List<?> list=ius.findUser(map);
  30. for (Object object : list) {
  31. UserBean ub=(UserBean) object;
  32. System.out.println(ub);
  33. }
  34. }
  35. */
  36.  
  37. /**
  38. * 测试修改数据
  39. */
  40. /*private static void update() {
  41. IUserServer ius=new UserServerImpl();
  42. UserBean ub=new UserBean();
  43. //先查询
  44. ub=ius.getUser(UserBean.class, Integer.valueOf(1));
  45. //后修改
  46. if(ub!=null){
  47. ub.setUserName("tomcat");
  48. }
  49. ius.updateUser(ub);
  50. }
  51. */
  52.  
  53. /**
  54. * 测试删除数据
  55. */
  56. /*private static void delete() {
  57. IUserServer ius=new UserServerImpl();
  58. ius.deleteUser(Integer.valueOf(11));
  59.  
  60. }*/
  61.  
  62. /**
  63. * 测试添加数据
  64. */
  65. /*private static void saveUser() {
  66. //首先从页面获取数据
  67. IUserServer ius=new UserServerImpl();
  68. UserBean ub=new UserBean();
  69. ub.setPassword("111");
  70. ub.setUserName("111");
  71. ius.saveUser(ub);
  72. }*/
  73.  
  74. }

数据库表:

create DATABASE j2ee;
create table t_user(
id int primary key auto_increment,
userName varchar(20),
pwd varchar(20)
);

作业 分页!

问题:

在完成这些之前呢,我遇到了个问题,就是我的session就是一直都得不到。

找了很久的错误,在上课的时候就一直没找到,放学的时候同学提醒了我,回去看看你的xml文件配置的问题,一个单词都不可以错的。

我在想会不会是我的表的名字有误呢。我直接把表名设置为user。

映射文件通常是以"类名+.hbm.xml"这样命名的。

我之前的UserBean.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping>
  7.  
  8. <class name="com.cy.beans.UserBean" table="user" catalog="car"> <!-- catalog数据库 -->
  9.  
  10. <id name="id" type="java.lang.integer"><!-- 此行的ID,为对象的属性ID -->
  11. <column name="userId"></column><!-- 此行的ID,为表字段ID -->
  12. <generator class="identity"></generator><!-- 给ID指定生成策略 -->
  13. </id>
  14.  
  15. <property name="userName" type="java.lang.String">
  16. <column name="userName"></column>
  17. </property>
  18.  
  19. <property name="password" type="java.lang.String">
  20. <column name="pwd"></column>
  21. </property>
  22.  
  23. </class>
  24.  
  25. </hibernate-mapping>

后来我重新建立了个数据库,j2ee,重新建表t_user。

改过之后的UserBean.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping>
  7.  
  8. <class name="com.cy.beans.UserBean" table="t_user" catalog="j2ee"> <!-- catalog数据库 -->
  9.  
  10. <id name="id" type="int"><!-- 此行的ID,为对象的属性ID --> <!--这里的type我就没有使用包装类-->
  11. <column name="id"></column><!-- 此行的ID,为表字段ID -->
  12. <generator class="identity"></generator><!-- 给ID指定生成策略 -->
  13. </id>
  14.  
  15. <property name="userName" type="java.lang.String">
  16. <column name="userName"></column>
  17. </property>
  18.  
  19. <property name="password" type="java.lang.String">
  20. <column name="pwd"></column>
  21. </property>
  22.  
  23. </class>
  24.  
  25. </hibernate-mapping>

这样改了之后就可以得到session了。所以总之在配置的时候,需要细心的!字母的大小写

,type="integer";,这样也是对的。

type="java.lang.Integer".

Hibernate进行对象的增删改查的更多相关文章

  1. hibernate关联对象的增删改查------查

    本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...

  2. hibernate关联对象的增删改查------增

    本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...

  3. Python之实例对象的增删改查

    #实例对象的增删改查p1 = ChinesePeople('wangyue')#print (p1.__dict__) #查看实例对象的属性#print (p1.name)(p1.play_ball( ...

  4. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  5. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  6. Hibernate——(2)增删改查

    案例名称:Hibernate完成增删改查 案例描述:抽取出工具类并完成删除.修改.查询功能. 具体过程: 1.使用上面的例子(Hibernate--(1)Hibernate入门http://blog. ...

  7. 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作

    页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...

  8. Hibernate常用api以及增删改查

    一   .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...

  9. 简述ADO中如何使用参数化的命令对象以及增删改查,存储过程的操作

    连接数据库代码: private SqlConnection con = null; public void OpenConnection(string connectionString) { con ...

随机推荐

  1. ESP-IDF3.0

    发行版v3.0的文档可在http://esp-idf.readthedocs.io/en/v3.0/上找到. 这是自发布v3.0-rc1以来的更改列表. 如果从以前的稳定版本V2.1进行升级,请检查v ...

  2. 类变量的初始化时机(摘录自java突破程序员基本功德16课)

    先看书本的一个例子,代码如下: public class Price { final static Price INSTANCE=new Price(2.8); static double initP ...

  3. [php-error-report]PHP Strict Standards: Only variables should be passed by reference

    // 报错代码:PHP Strict Standards: Only variables should be passed by reference $arr_userInfo['im_nation_ ...

  4. php支付宝手机网页支付类实例

    <?php $alipayConfig = array( 'key' => 'xxxxx', //买卖安全校验码,用于签名的32位密钥 'transport' => 'https', ...

  5. 关于tableview下拉刷新崩溃的问题

    逻辑应该是这样的:1. 下拉2. 达到下拉临界值以后再请求网络数据3. 待数据加载到本地以后才更新 data source4. reload tableview 如果先清空再下拉,后果就是往下拉的距离 ...

  6. Windows安装配置docker

    如果是win10的,请在https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 下载Stable ...

  7. C# 加特效

    public class BulletMove : MonoBehaviour { public float Speed = 5f; public Transform Fx; // Use this ...

  8. 实现输入框不可输入、解决Enable,Disable等不能更新值问题

    当在前台JS中更新不可用输入框(TextBox.Enable ="false"  or Input box ReadOnly ="True")的值时, 后台可能 ...

  9. WPF Slider滑动条的颜色修改

    效果如下: 鄙人虽然开发WPF有些时间,但之前一直是一些简单Template和Style改改之类的工作,并没有深入研究过.此次为了完成工作,首先也是网上搜了半天,没有找到合适的代码直接拷贝(搜索能力待 ...

  10. Angular build Error:In this configuration Angular requires Zone.js

    Angular cli 运行 build后打开生成的index.html报错:In this configuration Angular requires Zone.js 生成代码如下: ng bui ...