分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

初识hibernate——环境搭建

发布时间:2023-09-06 01:24责任编辑:熊小新关键词:暂无标签

一  配置过程

1. 创建一个项目


2. 导包
    required里的包

    optional里的c3p0连接池的三个包

    数据库驱动包

    Junit

    
3.创建Hibernate的配置文件(hibernate.cfg.xml)

4.创建持久化的实体类对象User
            

5.创建对象与关系型数据库之间的映射(user.hbm.xml或使用注解)

6.通过Hibernate访问数据库

二  示例

配置文件实现:

1.创建项目hibernate-01

2.导入需要的包

3.创建Hibernate的配置文件(hibernate.cfg.xml)

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC ???"-//Hibernate/Hibernate Configuration DTD//EN" ???"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> ??<session-factory> ???????<!-- 数据库连接 --> ???????<property name="connection.driver_class">com.mysql.jdbc.Driver</property> ???????<property name="connection.url">jdbc:mysql://localhost:3306/work</property> ???????<property name="connection.username">root</property> ???????<property name="connection.password">root</property> ???????????????<property name="current_session_context_class">thread</property> ???????<!-- 连接池Jdbc connection pool C3P0--> ???????<property name="connection.pool_size">1</property> ???????<!-- 方言dialect --> ???????<property name="dialect">org.hibernate.dialect.MySQLDialect</property> ???????????????<!-- 是否显示sql语句Echo all executed SQL to stdout --> ???????<property name="show_sql">true</property> ???????<property name="format_sql">true</property><!-- 同步程序与数据库中的表 --><property name="hbm2ddl.auto">update</property> <!-- 映射文件配置,配置文件名必须包含其相对于根的全路径 --><mapping resource="com/jn/pojo/user.hbm.xml"/> ???</session-factory></hibernate-configuration>

4.创建持久化的实体类对象User

package com.jn.pojo;public class User {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}

5.创建对象与关系型数据库之间的映射(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><!-- 配置User类与数据库表user之间的映射关系 --><class name="com.jn.pojo.User" table="user"><!-- 主键的配置需要使用id标签在配置主键时: 实体类中属性名, 实体类中属性的类型指定主键的创建规则 --><id name="id" type="int"><column name="id"></column><generator class="native"></generator></id><!-- 配置普通属性 --><property name="name" type="java.lang.String"><column name="name" ></column></property><property name="age" type="int"><column name="age" ></column></property></class></hibernate-mapping>

6.通过Hibernate访问数据库:测试类MainTest.java

package com.jn.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;import com.jn.pojo.User;public class MainTest {@Testpublic void test(){//1. 加载配置文件, 创建配置对象/** * 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件 * 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件 */Configuration configuration = new Configuration().configure("hibernate.cfg.xml");//2. 创建SessionFactoryServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(sr);//3. 获取Session对象/** * sessionFactory.getCurrentSession(), 获取当前线程的Session对象 */Session session = sessionFactory.openSession();//4. 操作数据库// 开启事务session.beginTransaction();// 创建实体类对象User user = new User();user.setName("my");user.setAge(23);// 将实体类对象保存到数据库中/** * save方法会将实体类对象, 保存到数据库的中表中. * 在这个过程中, 代码中不需要写SQL语句, 它的insert语句是由Hibernate根据ORM的关系映射自动创建了 */session.save(user);// 提交事务session.getTransaction().commit();//5. 关闭对象session.close();sessionFactory.close();}}

7.项目结构:

注解实现: 

1.创建项目hibernate-02

2.导入需要的包

3.创建Hibernate的配置文件(hibernate.cfg.xml)

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC ???"-//Hibernate/Hibernate Configuration DTD//EN" ???"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> ??<session-factory> ???????<!-- 数据库连接 --> ???????<property name="connection.driver_class">com.mysql.jdbc.Driver</property> ???????<property name="connection.url">jdbc:mysql://localhost:3306/work</property> ???????<property name="connection.username">root</property> ???????<property name="connection.password">root</property> ???????????????<property name="current_session_context_class">thread</property> ???????<!-- 连接池Jdbc connection pool C3P0--> ???????<property name="connection.pool_size">1</property> ???????<!-- 方言dialect --> ???????<property name="dialect">org.hibernate.dialect.MySQLDialect</property> ???????????????<!-- 是否显示sql语句Echo all executed SQL to stdout --> ???????<property name="show_sql">true</property> ???????<property name="format_sql">true</property><!-- 同步程序与数据库中的表 --><property name="hbm2ddl.auto">update</property> <!-- 映射文件配置,配置文件名必须包含其相对于根的全路径 --><mapping class="com.jn.pojo.User"/> ???</session-factory></hibernate-configuration>

4.创建持久化的实体类对象User

package com.jn.pojo;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="user")public class User {private int id;private String name;private int age;@Id@Column(name="id")@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setId(int id) {this.id = id;}@Column(nullable=true)public String getName() {return name;}public void setName(String name) {this.name = name;}@Column(nullable=true)public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}

5.创建对象与关系型数据库之间的映射(User中注解实现)

6.通过Hibernate访问数据库:测试类MainTest.java

package com.jn.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;import com.jn.pojo.User;public class MainTest {@Testpublic void test(){//1. 加载配置文件, 创建配置对象/** * 默认情况下, 如果configure方法调用的是无参的, 则会加载SRC文件夹下的名字为hibernate.cfg.xml的配置文件 * 如果配置文件名不是hibernate.cfg.xml, 那么可以在configure方法中指定配置文件 */Configuration configuration = new Configuration().configure("hibernate.cfg.xml");//2. 创建SessionFactoryServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(sr);//3. 获取Session对象/** * sessionFactory.getCurrentSession(), 获取当前线程的Session对象 */Session session = sessionFactory.openSession();//4. 操作数据库// 开启事务session.beginTransaction();User user = (User) session.get(User.class, 1); ?//获取id为1的userSystem.out.println(user);user.setAge(21);System.out.println(user);// 提交事务session.getTransaction().commit();//5. 关闭对象session.close();sessionFactory.close();}}

7.项目结构:

  

三  Hibernate开发步骤—API应用步骤

l  创建hibernate配置,读取Hibernate配置文件及信息

l  用读取的配置信息生成SessionFactory对象

l  从SessionFactory对象获取 一个Session对象

l  用Session对象生成事务

l  通过Session对象的方法进行操作

l  提交或回滚事务

l  释放session and session factory资源

四  hibernate的优点

(1)首先是开源和免费的License,方便功能定制,需要时可以查看源码或者修改源码。
(2)其次它是一个轻量级封装框架,避免引入过多复杂代码,减轻程序员调试负担。
(3)再次它是一个有可扩展性、API开放的框架,可以在功能不够用时进行其功能的扩展。
(4)最后就是Hibernate的程序开发使用者众多,促使产品有稳定的发展保证。

 

 

  

  

初识hibernate——环境搭建

原文地址:http://www.cnblogs.com/mlan/p/7827588.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved