3.hello hibernate

一、Hibernate的开发步骤

1、引入jar文件
2、配置
3、api
hibernate的映射文件的配置是不容易的,是重点学习的地方。

二、Hello Hibernate

1、数据库表准备

数据库名 :test
表:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` int(11) NOT NULL auto_increment,`name` varchar(255),`birthday` date,PRIMARY KEY  (`id`)
);
ps:
主键id,int类型,必须设置 auto_increment 自增长。如果不设置,hibernate在操作mysql数据库保存数据时会报错误:
java.sql.SQLException: Field 'id' doesn't have a default value

2、引入jar文件

*hibernate3.6
hibernate3.jar核心  +  required文件夹里的jar+  jpa文件夹里的jar  + 数据库驱动包。
hibernate3.jar核心:hibernate-distribution-3.6.0.Final \ hibernate3.jar
required文件夹里的jar:hibernate-distribution-3.6.0.Final \ lib \ required
jpa文件夹里的jar:hibernate-distribution-3.6.0.Final \ lib \ jpa
数据库驱动包:本例用mysql。
--------------------必须的包如下9个:---------------------------
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
mysql-connector-java-5.1.8-bin.jar
slf4j-api-1.6.1.jar

3、写对象以及对象的映射

User.java
package hello.hibernate;import java.util.Date;public class User {private int userId;private String username;private Date birthday;//省略构造,get,set方法
}

User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hello.hibernate"><class name="User" table="users"><!-- 主键映射 --><id name="userId" column="id"><generator class="native" /></id><!-- 非主键映射 --><property name="username" column="name"></property><property name="birthday" column="birthday"></property></class>
</hibernate-mapping>

PS:<hibernate-mapping package="hello.hibernate"> 的 package必须写,如果不写会报:
Could not parse mapping document from resource hello/hibernate/User.hbm.xml

4、src/hibernate.cfg.xml  主配置文件

1、数据库连接配置
2、加载所用的映射(*.hbm.xml)
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/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:///test</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><!-- sql方言:告诉hibernate你在用哪个数据库 --><property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><property name="show_sql">true</property><!-- 加载所用的映射(*.hbm.xml) --><mapping resource="hello/hibernate/User.hbm.xml"/></session-factory>
</hibernate-configuration>

5、测试类编写,使用api

@Testpublic void test(){User user=new User();user.setUsername("hello");user.setBirthday(new Date());//获取加载配置文件的管理类对象Configuration config=new Configuration();//读取配置文件,默认读取加载src/hibernate.cfg.xmlconfig.configure();//创建session工厂对象SessionFactory sf=config.buildSessionFactory();//创建会话对象,代表与数据库的一次会话Session session=sf.openSession();//开启事务Transaction tx=session.beginTransaction();//保存数据session.save(user);//提交事务tx.commit();//关闭会话session.close();//关闭会话工厂sf.close();}

效果:
控制台打印出hibernate执行了的sql语句
mysql数据库test--users表多了一条记录



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法连接oralce问题(不断更新)

1、oracle自带的sqlplus能连接&#xff0c;但第三方工具如plsqldev不能连接 解决方法&#xff1a;1、确认listener.ora&#xff0c;tnsnames.ora配置文件中的host地址一致。且&#xff1a;listener.ora只能配置主机名。winr&#xff0c;cmd&#xff0c;hostname 获取主机名。2、…

新版vue-cli搭建多页面应用

2019独角兽企业重金招聘Python工程师标准>>> 折腾了好久&#xff0c;终于把坑踩完了&#xff0c;废话不多说&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推荐一下我另一篇博客&#xff0c;我觉得这篇好用&…

android开发方法数,Android减少App方法数

作为Android开发者我们都知道Android应用方法数65535这样一个限制&#xff0c;这是因为在Android系统中&#xff0c;方法的id使用short类型存储在Dex文件中&#xff0c;而short类型的取值范围是-32,768到32,767&#xff0c;因此导致Android应用方法数65535这样一个最大限制&…

内表,外表

一、内表 Internal Table 内表与结构体基本类似&#xff0c;它同样是程序运行中被临时创建的一个存储空间&#xff0c;它是一个可包含多条记录的数据表。 二、外表 外表(external table)就像普通的表对像一样&#xff0c;可以select等&#xff0c;只是它是只读的&#xff0c;数…

国外分享插件

<script type"text/javascript" src"//s7.addthis.com/js/300/addthis_widget.js#pubidra-59effacb0a4e93a8"></script> addthis转载于:https://www.cnblogs.com/ghfjj/p/8026946.html

android 方法超时,android socket.io中的发出或确认超时处理?

套接字发出超时确认我的AckWithTimeOut带有实现的自定义超时类Ack接口public class AckWithTimeOut implements Ack {private Timer timer;private long timeOut 0;private boolean called false;public AckWithTimeOut() {}public AckWithTimeOut(long timeout_after) {if (…

2017 Google 开发者大会直播入口

今年&#xff0c;Google 开发者大会再度来袭&#xff01;大会将于 12 月 13 日和 14 日在上海举办&#xff0c;主题涵盖机器学习 (Machine Learning)、Android、移动网络&#xff08;Mobile Web)、TensorFlow、Firebase、云服务 (Cloud)、AR/VR、设计 (Design) 以及更多开发者相…

Oracle sqlldr

一、sqlldr的概述 sqlldr是oracle自带的一个工具&#xff0c;用于导入文本文件的内容到oracle数据库中。 该工具在&#xff1a;\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe 二、使用 D:\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe useriduser/…

android实现推送方式解决方案,Android实现推送方式解决方案系列教程

Android实现推送方式解决方案系列教程 1-5Android实现推送方式解决方案系列教程总结者&#xff1a;难民 交流Q群: 137824028Android实现推送方式解决方案系列之一--XMPP协议出自&#xff1a;http://doc.docsou.com/thread-1004-1-1.htmlXMPP协议简介XMPP(Extensible Messageing…

日志组件slf4j介绍及配置详解

2019独角兽企业重金招聘Python工程师标准>>> 原文出自 1 基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的&#xff0c;而很多程序员也已经熟悉各种不同的日志库&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

网上文章很多&#xff0c;今天分别跑了一张2000多万行的表&#xff0c;该表没有主键&#xff0c;索引&#xff0c;约束条件。 结果是&#xff0c;效率差不多

android 转场动画兼容问题,【Android】关于ARouter转场动画的问题

实现从主页跳转到搜索页&#xff0c;再从搜索页回退主页withTransition(int resId,int resId)这个方法两个参数第一个的意思是&#xff0c; A 到 B&#xff0c; B 的入场动画第二个的意思是&#xff0c;A 到 B&#xff0c; A 的出场动画即&#xff0c;入场动画&#xff0c;出场…

Oracle 一些常用函数

ROUND&#xff1a; 如何使用 Oracle Round 函数 (四舍五入) 描述 : 传回一个数值&#xff0c;该数值是按照指定的小数位元数进行四舍五入运算的结果。 SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取…

基于github和hexo搭建博客 本地hexo博客搭建

正常都应该讲一讲为什么搭建博客&#xff0c;不过既然您能看见这篇文章&#xff0c;就说明你想搭建一个自己的博客&#xff0c;无论自己记录自己的东西&#xff0c;或是为了显得高大上。那就不废话了&#xff0c;进入正题。 其实教大家搭建博客的文章很多&#xff0c;讲的都不错…

react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同

叫雨山斗鸡优势在哪里&#xff0c;环境不同&#xff0c;价值不同 原生态高端食材网站&#xff0c;专注金线莲、散放斗鸡、斗鸡蛋、野生蜂蜜、小耳黑猪肉等云南原生态套餐定制的高端食材供应商。云南叫雨山斗鸡叫雨山斗鸡原生态饲养 叫雨山斗鸡源自于鲁西斗鸡&#xff0c;初代斗…

android studio 布局拖拽,为什么使用android studio不能像老师一样在Design里随意拖动控件...

qq_喷泉_02017-07-25 13:08已采纳xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"tools:context"co…

Oracle自定义函数(不断更新)

1、将数字转为ip地址&#xff1a;IPAdd_DotNumFormat create or replace FUNCTION IPAdd_DotNumFormat(v_LfValue number)return varchar2 asv_DotNumString varchar2(50);v_flg Integer;v_NewLfValue number;v_tmp Integer;v_P1 Integer;v_P2 Integer;v_P3 Integer;v_P4…

element ui select设置不显示不存在的项_appium—等待时间设置方法

引言&#xff1a;在做UI自动化的过程中&#xff0c;我们有时候为了等待元素的出现&#xff0c;需要加一些等待时间来帮助&#xff0c;但是有时候时间加的过多或者过少&#xff0c;这个没有办法判断&#xff0c;今天就介绍几种等待时间&#xff0c;我们看看那种适合我们 一、强制…

android rn 和webview,RN Webview与Web的通信与调试

React Native Version:0.51RN 在 0.37 版本中加入了WebView功能&#xff0c;所以想要在使用WebView,版本必须>0.37&#xff0c;发送的 message 只能是字符串&#xff0c;所以需要将其他格式的数据转换成字符串&#xff0c;在接收到后再转换回去&#xff0c;其实直接用JSON.s…

数据库完整性检查

为了主动发现数据库侧页损坏&#xff0c;保证数据库逻辑和物理完整性&#xff0c;计划每周六上午6点&#xff0c;针对生产主库上的所有系统和用户数据库执行DBCC CHECKDB&#xff0c;将结果记录到表中。以下为理论依据&#xff1a;SQL Server数据库可以检测出页损坏&#xff0c…