今天学习hibernate 。

创建User类:

package com.hibernate;

import java.util.Date;

public class User {
private Integer id;
private String name;
private Date birth; public User(){} public User(Integer id, String name, Date birth) {
super();
this.id = id;
this.name = name;
this.birth = birth;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";
} }

写User类的hiebernate

<?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.hibernate">
<!-- 映射表和实体 -->
<class name="User" table="t_user">
<!-- 字段(column)和属性(name) 属性名和字段名一致的时候,可以省略-->
<id name="id">
<!-- 主键生成器 -->
<generator class="increment"></generator>
</id>
<property name="name"></property>
<property name="birth"></property>
</class>
</hibernate-mapping>

配置hibernate的映射:

<?xml version="1.0" encoding="utf-8"?>
<!--
dtd:document type definition
标签,标签中的属性,标签的层级,标签的先后顺序
-->
<!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.url">jdbc:oracle:thin:@192.168.1.105:1521:orcl</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.username">ems</property>
<property name="hibernate.connection.password">123456</property> <!-- 自身配置信息
dialect:方言 指示数据库的厂商.
:hibernate在进行底层的数据库操作时,会针对不同的数据库特点,做出相应的适应.
-->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 显示 并 格式化 hibernate底层执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
      <!--在数据库中自动创建表-->
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件的注册 -->
<mapping resource="com/hibernate/User.hbm.xml"/> </session-factory>
</hibernate-configuration>

写测试类:

package com.hibernate;

import java.util.Date;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session; public class Test {
public static void main(String[] args) {
//加载配置
Configuration config=new Configuration().configure();
//用加载配置连接session工厂
SessionFactory factory =config.buildSessionFactory();
//利用session工厂创建session
Session session=factory.openSession();
//通过session获取事务
Transaction transaction=session.beginTransaction();
User u=new User(null,"heluwei",new Date());
session.save(u);
transaction.commit();
session.close();
factory.close();
}
}

小知识:

getCurrentSession()和openSession()

用getCurrentSession()需要在xml文件中配置

<!--  即可通过getCurrentSession 获取线程唯一的session -->
<property name="current_session_context_class">thread</property>
<!-- 禁用了javaEE6的bean-validate -->
<property name="javax.persistence.validation.mode">none</property>

openSession每次调用都获取新的session对象。但是getCurrentSession在同一线程中多次调用,获取的是同一个对象。

利用注解的方式:

在xml配置文件中需要加上需要注解的 类:

<mapping class="com.hibernate.User"/>

实体:

package com.hibernate;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType; import org.hibernate.annotations.GenericGenerator; @Entity//这是一个参与ORM映射的实体
//参与ORM的表,及表名,如果表名和实体名一致的话,则此注解可以省略.
//则hibernate会用实体名作为表名
@Table(name="t_user")
public class User {
//@Id必需注解
@Id//此属性要映射主键列
//如果属性名和列名一致,则@Column可以省略
@Column(name="id")//此属性映射的列名为id
@GenericGenerator(name="inc47",strategy="increment")
@GeneratedValue(generator="inc47")
private Integer id;
//@Column(name="name")
private String name;
//@Column(name="birth")
//Date==只保存日期
//Time==只保存时间
//TimeStamp==保存日期和时间 (默认)
@Temporal(TemporalType.DATE)
private Date birth;
public User(){} public User(Integer id, String name, Date birth) {
super();
this.id = id;
this.name = name;
this.birth = birth;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";
} }

hibernate------->第一个程序的更多相关文章

  1. Hibernate第一个程序(最基础的增删改查) --Hibernate

    本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述.总之,使用Hibernate对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...

  2. 用my eclipse 新建hibernate 第一个程序

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 今天就来开始建我们的第一个hibernat ...

  3. Hibernate第一个程序

    1. 下载资源:www.hibernate.org 2. 资源介绍hibernate-release-4.3.10.Final a) Documentation  相关文档 b) Lib 相关jar包 ...

  4. Hibernate5笔记1--Hibernate简介和第一个程序

    Hibernate简介: Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hib ...

  5. Hibernate 入门的第一个程序

    一. Hibernate介绍     Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案.ORM方案的思想是将对象模型表示的对象映射到关 ...

  6. Android开发-之第一个程序:HelloWorld!

    小编觉得不管学习什么编程的时候,第一个程序都是要求打印输出一个"HelloWorld!",那就从最简单的HelloWorld开始吧!哈哈~~~~ 一.创建一个Android工程 1 ...

  7. 在运行Hibernate Hello World程序的时候,抛如下错误: view plain Exception in thread "main" org.hibernate.exception.LockAcquisitionException 解决方法

    在运行Hibernate Hello World程序的时候,抛如下错误: Exception in thread "main" org.hibernate.exception.Lo ...

  8. [Fluent NHibernate]第一个程序

    目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴 ...

  9. rails再体验(第一个程序)

    掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...

  10. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

随机推荐

  1. 让MyEclipse里的Tomcat自动reloadable

    1  修改server.xml Context path="/***" docBase="XXX" reloadable="true"/&g ...

  2. IP地址分类(转)

    IP地址分类以及C类IP地址的子网划分 国际规定:把所有的IP地址划分为 A,B,C,D,E A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的 ...

  3. 修改List报ConcurrentModificationException异常原因分析

    使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析 在使用Iterator来迭代遍历List的时候如果修改该List对象,则会报jav ...

  4. 《Troubleshooting SQL Server》读书笔记-CPU使用率过高(下)

    <Troubleshooting SQL Server>读书笔记-CPU使用率过高(下) 第三章 High CPU Utilization. CPU使用率过高的常见原因 查询优化器会尽量从 ...

  5. 一款可定制的外国jQuery图表插件jqplot

    jqPlot是一个jQuery绘图插件,可以利用它制作漂亮的线状图和柱状图.jqPlot支持为图表设置各种不同的样式.提供Tooltips,数据点高亮显示等功能. 用法: 1.引入jQuery类库和相 ...

  6. ASP.NET之旅—再一次与ASP谋面

    ASP对我来说已经不是新名词了,因为在一年以前就开始了ASP的学习,那时候虽然效果很不好,但是对ASP还是有了一些最基础的了解.ASP.NET是在ASP基础上增加了一些.NET的一些特性,基础的东西还 ...

  7. pipe----管道----fork

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h&g ...

  8. 添加第三方类库造成的Undefined symbols for architecture i386:编译错误

    1.原因: 如果是源码编译的话,一般就只某些头文件没有添加到src编译里面.但是对于添加库编译,一般是库的编译路径设置不正确(比如arm的版本.模拟器或者真机的不同版本库引用错误或者重复引用一起编译器 ...

  9. 如何Windows系统中搭建php环境

    PHP介绍: PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTM ...

  10. OC之方法的声明实现和调用

    1. 类是来描述一群具有相同特征和行为的事物的. 类还有行为. 类的声明 @interface 类名 : NSObject { 属性. } 方法的声明 @end 类的实现. @implementati ...