博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate
阅读量:6123 次
发布时间:2019-06-21

本文共 3350 字,大约阅读时间需要 11 分钟。

1.创建项目并导入jar包。

jar包可以从 http://hibernate.org/orm/releases/ 下载

这里有hibernate的多个版本,点击其中一个版本后,进入下载页面

左边是maven用于maven项目,我下载的是右边的Zip Archive,这个包含了全部的jar包、源码、示例和帮助文档。

解压后找到lib文件夹,这里是hibernate的全部jar包,其中required里是核心jar包,把required里的jar包都导入项目中即可。此外,还要导入数据库驱动包。

#2.创建数据库及表

在mysql中创建一个名为“hibernate”的数据库,创建“paper”表

将id设为主键且自增。

第二步:编写实体类和映射文件

#1.编写试题类

Hibernate使用POJO来进行持久化,要求有与数据库表相对应的属性和getter、setter方法。

[java]   
 
  1. package com.vo;  
  2.   
  3. public class People {  
  4.     private int id;  
  5.     private String name;  
  6.     private Integer age;  
  7.   
  8.     public Integer getId() {  
  9.         return id;  
  10.     }  
  11.   
  12.     public void setId(int id) {  
  13.         this.id = id;  
  14.     }  
  15.   
  16.     public String getName() {  
  17.         return name;  
  18.     }  
  19.   
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.   
  24.     public Integer getAge() {  
  25.         return age;  
  26.     }  
  27.   
  28.     public void setAge(Integer age) {  
  29.         this.age = age;  
  30.     }  
  31.   
  32.     @Override  
  33.     public String toString() {  
  34.         return "People [id=" + id + ", name=" + name + ", age=" + age + "]";  
  35.     }  
  36. }  
#2.编写映射文件People.hbm.xml
[java]   
 
  1. <?xml version="1.0"?>  
  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 package="com.vo">  
  7.     <class name="People" table="people">  
  8.         <id name="id">  
  9.          <generator class="native"/>  
  10.         </id>  
  11.         <property name="name"/>  
  12.         <property name="age"/>  
  13.     </class>  
  14. </hibernate-mapping>  

必须有id标签,generator设置主键生成策略,native是根据在identity、sequence、hilo三种生成器中选择。使用mysql时,native相当于identity。此时在mysql数据库中要将id设为自增长,否则出错。

第三步:编写核心配置文件

 

[java]   
 
  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.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  8.           
  9.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  10.         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>  
  11.         <property name="connection.username">root</property>  
  12.         <property name="connection.password"></property>  
  13.           
  14.         <property name="show_sql">true</property>  
  15.         <property name="format_sql">true</property>  
  16.           
  17.         <mapping resource="com/vo/People.hbm.xml"/>  
  18.           
  19.     </session-factory>  
  20. </hibernate-configuration>  

dialect:数据库方言,用的是哪种数据库,要设置与之对应的数据库方言。在hibernate中我们不用编写sql语句,但是由于不同的数据库支持的sql有差别,所以要指定采用哪一种数据库的方言。

show_sql和format_sql:在控制台显示sql语句。

mapping:配置映射文件路径。

第四步:进行增删改查

#1.增和查
[java]   
 
  1. package com.test;  
  2. import org.hibernate.Session;  
  3. import org.hibernate.SessionFactory;  
  4. import org.hibernate.cfg.Configuration;  
  5. import com.vo.People;  
  6.   
  7.   
  8. public class TestHibernate {  
  9.     public static void main(String[] args) {  
  10.         Configuration configuration = new Configuration().configure();    //读取配置文件,如果配置文件hibernate.cfg.xml放于src目录下,则不用写配置文件的路径。  
  11.         SessionFactory factory = configuration.buildSessionFactory();    //创建工厂  
  12.         Session session = factory.openSession();    //得到一个Session  
  13.         session.beginTransaction();    //开启事务:增删改需要开启事务并手动提交;查 不需要开启事务。  
  14.           
  15.         People p = new People();    //设置了自增长,不需要设置id  
  16.         p.setName("yang");      
  17.         p.setAge(10);  
  18.         session.save(p);    //将对象p持久化  
  19.         session.getTransaction().commit();    //增删改操作需要手动提交  
  20.                 session.get(People.class, 1);    //查询id为1的people  
  21.                 session.close();    //关闭Session  
  22.     }  
  23. }  

 

 

#2.改
[java]   
 
  1. People p = new People();  
  2. p.setId(1);  
  3. p.setName("liu");  
  4. p.setAge(20);  
  5.   
  6. session.update(p);   
  7. session.getTransaction().commit();  
#3.删
[java]   
 
  1. People p = new People();  
  2. p.setId(1);  
  3. session.delete(p);  
  4. session.getTransaction().commit();  
简单记录一下java的,有时间继续写一下node的相关。

转载于:https://www.cnblogs.com/acefeng/p/9006618.html

你可能感兴趣的文章
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>