分享web开发知识

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

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

hibernate--HelloWorld

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

  本次学习版本:hibernate-release-5.2.6.Final,要求java 1.8 和JDBC 4.2。

  hibernate是一个开放源代码的对象关系映射框架。对JDBC进行了非常轻量的封装。它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库

  hibernate可以在官网直接下载。

  

那么就来看用hibernate实现的一个Hello World的实例。

package com.fuwh.model;//这是一个实体类public class Helloworld { ???????private long id; ???private String helloWorld; ???public long getId() { ???????return id; ???} ???public void setId(long id) { ???????this.id = id; ???} ???public String getHelloWorld() { ???????return helloWorld; ???} ???public void setHelloWorld(String helloWorld) { ???????this.helloWorld = helloWorld; ???} ???????}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- 这是实体类和表的映射关系的配置文件 --><hibernate-mapping package="com.fuwh.model"> ???<class name="Helloworld" table="t_helloworld"> ???????<id name="id" type="long"> ???????????<generator class="native"></generator> ???????</id> ???????<property name="helloWorld" column="helloworld"/> ???</class></hibernate-mapping>
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> ???????<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property> ???????<property name="hibernate.connection.username">root</property> ???????<property name="hibernate.connection.password">mysqladmin</property> ???????<!-- ????????????指定方言,表明用的是哪种数据库,也可以不指定,hibernate默认会翻译成正确的数据库脚本 ???????????方言可以在 hibernate-release-xx.xx/project/etc/hibernate.properties 中查找 ????????--> ???????<property name="hibernate.dialect">MySQL5</property> ???????<!-- 设定时候更新表结构,不存在或自动创建 --> ???????<property name="hibernate.hbm2ddl.auto">update</property> ???????<!-- 配置 在后台打印出sql语句 --> ???????<property name="show_sql">true</property> ??????<!-- 引入实体类和表的映射文件 --> ???????<mapping resource="com/fuwh/model/Helloworld.hbm.xml"/> ???</session-factory> ???</hibernate-configuration>

使用JUNIT的单体测试实例

package com.fuwh.service;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.fuwh.model.Helloworld;public class JunitTest { ???????private SessionFactory sessionFactory; ???????@Before ???public void setUp() throws Exception { ???????final StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder() ???????????????????????????????????????????????????????.configure() ???//读取hibernate.cfg.xml文件 ???????????????????????????????????????????????????????.build(); ???????try { ???????????sessionFactory=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory(); ???????} catch (Exception e) { ???????????// TODO: handle exception ???????????System.out.println(e); ???????????StandardServiceRegistryBuilder.destroy(serviceRegistry); ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????} ???} ???@After ???public void tearDown() throws Exception { ???????if ???(sessionFactory != ???null){ ???????????sessionFactory.close(); ???????} ???} ???@Test ???public void test() { ???????Session session=sessionFactory.openSession(); ???????session.beginTransaction(); ???????????????Helloworld helloWorld=new Helloworld(); ???????helloWorld.setHelloWorld("Hello World!!!"); ???????//完全以操作对象的形式保存对象为表的一条记录 ???????session.save(helloWorld); ???????????????session.getTransaction().commit(); ???????session.close(); ???????????????????}}

执行的时候的部分log

生成的表结构

 插入的表数据

 下面在来看用注解的方式的实现

 注解的方式就不再需要Helloworld.hbm.xml文件

实体类修改如下

package com.fuwh.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;//这是一个实体类@Entity@Table(name="t_helloworld")public class Helloworld { ???????private long id; ???private String helloWorld; ???????@Id ???@GeneratedValue(generator="_native") ???@GenericGenerator(name="_native",strategy="native") ???public long getId() { ???????return id; ???} ???public void setId(long id) { ???????this.id = id; ???} ???@Column(name="helloworld") ???public String getHelloWorld() { ???????return helloWorld; ???} ???public void setHelloWorld(String helloWorld) { ???????this.helloWorld = helloWorld; ???} ???????}

另外在hibernate.cfg.xml中不再是引入Helloworld.hbm.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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> ???????<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property> ???????<property name="hibernate.connection.username">root</property> ???????<property name="hibernate.connection.password">mysqladmin</property> ???????<!-- ????????????指定方言,表明用的是哪种数据库,也可以不指定,hibernate默认会翻译成正确的数据库脚本 ???????????方言可以在 hibernate-release-xx.xx/project/etc/hibernate.properties 中查找 ????????--> ???????<property name="hibernate.dialect">MySQL5</property> ???????<!-- 设定时候更新表结构,不存在或自动创建 --> ???????<property name="hibernate.hbm2ddl.auto">update</property> ???????<!-- 配置 在后台打印出sql语句 --> ???????<property name="show_sql">true</property> ??????<!-- 引入实体类和表的映射文件 --> ???????<mapping class="com.fuwh.model.Helloworld"/> ???</session-factory> ???</hibernate-configuration>

执行结果也是一样的。

  

hibernate--HelloWorld

原文地址:http://www.cnblogs.com/wangsicongde/p/7573517.html

知识推荐

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