Hibernate作为JPA的一种实现,jpa的注解已经是hibernate的核心,hibernate只提供了一些补充,而不是两套注解。hibernate对jpa的支持够足量,在使用hibernate注解建议使用jpa

XML版本过程:

新建工程, 导入hibernate包, 数据库包, 建立数据库表, 新建model类, 测试类, 新建src下hibernate.cfg.xml, model 类下 Student.hbm.xml

annotation版本过程:

新建工程, 导入hibernate包, 数据库包, 建立数据库表, 新建model类 (里面加入@Entity(javax), 和@Id (主键)), 测试类, 新建src下hibernate.cfg.xml(加入映射)

所以annotation比较简单.

XML版本具体过程:

1. new->java project : hibernate_0100_HelloWorld

2. 引入所有Hibernate的jar包:

  1. preferrence->java->build path->user library-> new("hibernate")-> Add JARs (hibernate3, antlr, commons-collections, dom4j, javassist, jta,slf4j-api, slf4j-nop)

2. 右键项目 build-> add libraries->user library->"hibernate"

3. 引入数据库包 build-> add external archieves-> mysql-connector....

4. 建立数据库的表

create database hibernate;
use hibernate;
create table student(id int primary key, name varchar(20), age int);

5. new class: Student    package: com.bjsxt.hibernate.model

package com.bjsxt.hibernate.model;

public class Student {
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;
}
}

6.  new class: StudentTest.java     package: default

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; import com.bjsxt.hibernate.model.Student; public class StudentTest {
public static void main(String[] args) throws Exception{
Student s =new Student();
s.setId(2);
s.setName("lisi");
s.setAge(30); Configuration cfg=new Configuration();
SessionFactory sf=cfg.configure().buildSessionFactory(); //默认找hibernate.cfg.xml,然后产生一个connection工厂
Session session = sf.openSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sf.close();
}
}

7. 在src下放hibernate.cfg.xml:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//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/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">linda0213</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- JDBC connection pool (use the built-in) -->
<!--<property name="connection.pool_size">1</property> --> <!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management -->
<!--<property name="current_session_context_class">thread</property> --> <!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!--<property name="format_sql">true</property> --> <!-- Drop and re-create the database schema on startup
<property name="hbm2ddl.auto">update</property>
-->
<!--<mapping class="com.bjsxt.hibernate.model.Student"/> -->
<mapping resource ="com/bjsxt/hibernate/model/Student.hbm.xml"/>
</session-factory> </hibernate-configuration>

8. 在model下new Student.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bjsxt.hibernate.model">
<class name="Student" table="student">
<id name="id"></id>
<property name="name"/>
<property name="age"/>
</class>
</hibernate-mapping>

9. run -> java application.

运行出错的话一般还需要加入两个包: cglib-nodep-2.1_3.jar, commons-logging.jar

  

annotation版本具体过程:

1. 加入annotation相关的jar包(hibernate-annotations, ejb3-persistence, hibernate-commons-annotations )

2. 创建teacher表:

use hibernate;
create table teacher(id int primary key, name varchar(20), title varchar(10));

3. 创建一个新的model 类, Teacher.java:

里面加入@Entity(javax), 和@Id (主键)

package com.bjsxt.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.Id; @Entity
public class Teacher {
private int id;
private String name;
private String title; @Id
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 String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

3. 建立一个新的测试类TeacherTest.java;

import javax.persistence.Entity;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration; import com.bjsxt.hibernate.model.Teacher; @Entity
public class TeacherTest {
public static void main(String[] args) throws Exception{
Teacher t =new Teacher();
t.setId(3);
t.setName("ww");
t.setTitle("high"); Configuration cfg=new AnnotationConfiguration();
SessionFactory sf=cfg.configure().buildSessionFactory(); //默认找hibernate.cfg.xml,然后产生一个connection工厂
Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();
}
}

4. hibernate-cfg.xml里加入这句话:

<mapping class="com.bjsxt.hibernate.model.Teacher"/>

  

  

也可以自动创建数据库里的表, 只需要在hibernate.cfg.xml里加入这样一句话:

<property name="hbm2ddl.auto">create</property>

可以通过类正向建表. 也可以建表反向推出类 

那么是先建表还是先建类呢?  理论上来说, 先建类, 但是实际工作中先表.

因为表需要进行优化,  

 

  

Hibernate---第一个helloworld程序 (XML版本, annotation版本)的更多相关文章

  1. SpringMVC基础入门,创建一个HelloWorld程序

    ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...

  2. Java语言入门-第一个HelloWorld程序

    1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...

  3. springboot之搭建第一个helloworld程序

    1.下载基本框架 在网站:https://start.spring.io/ 全部默认,基本没有改动 选择依赖,当然也可以自己在pom.xml加,我们直接在这里选择. 只选择Spring Web Sta ...

  4. Android Studio新建一个HelloWorld 程序(App)

    Android Studio新建一个HelloWorld程序(App) 新建 或者直接启动程序(注:如果已有程序,此方法会直接打开最近一次关闭从程序) 更改App名 选择App运行平台 选择模板 更改 ...

  5. Node.js入门以及第一个helloworld程序

    1.概念:简单的说 Node.js 就是运行在服务端的 JavaScript.学之前需要明白Node.js是无法挑战jsp.php或者asp这种老牌网站的地位的,是永远不会出现在证券.金融这种领域的. ...

  6. JAVA学习之第一个HelloWorld程序

    第一个HelloWorld程序 第一步,创建java类型的文件 第二步,在创建文件的目录中打开cmd窗口 第三步,使用javac 命令将java文件编译为.class类型的字节码文件 第四步,使用ja ...

  7. (二)手动配置第一个HelloWorld程序

    上例的HelloWorld是由Android sutudio 自动生成的,现在我们手动来配置. 1. 重新创建工程 2. 创建空的Activity 生成的MainActivity.java 文件: p ...

  8. windows游戏编程 创建WIN32一个HelloWOrld程序

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22449085 作者:jadeshu   邮箱: jades ...

  9. 对第一个HelloWorld程序的总结:

    /* 注释的作用 :提高了代码的阅读性:调试程序的重要方法 对第一个程序的总结: 创建:创建一个以.java结尾的文件叫做源文件 编译:(javac 源文件名.java) 会生成一个或多个字节码(.c ...

随机推荐

  1. Inno Setup入门(七)——提供安装语言选项

    Inno Setup安装目录下有一个Languages的文件夹,该文件夹提供了可供使用的语言,通过在脚本中加入[languages]段,可以实现该项功能,实现代码如下: [setup] ;全局设置,本 ...

  2. OpenGL红宝书第一个例子:绘制两个三角形

    1. 环境配置 在这里不在做环境配置的说明,因为网上可以找到很多类似的教程,如果有需要可以@我,我也希望能帮到大家,其它的不说了,先上我的代码 2. 第一个程序代码 创建LoadShader.h #p ...

  3. Jquery树控件ZTree异步加载

    异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 这里面主要设计ztree的setting变量的async属性设置: var setting = { ...

  4. Android Camera(二)

    上次已经写过SurfaceView显示Camera摄像了,代码可以运行,但是里面有问题,这次纠正过来,顺便实现变焦: 代码: public class CameravedioActivity exte ...

  5. static加载问题

    原文地址:http://blog.csdn.net/lubiaopan/article/details/4802430     感谢原作者! static{}(即static块),会在类被加载的时候执 ...

  6. C#无边框窗体移动 将事件绑定到想实现的控件上

    [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("use ...

  7. ZOJ 3913 Bob wants to pour water

    ZOJ Monthly, October 2015 K题 二分答案+验证 #include<iostream> #include<algorithm> #include< ...

  8. Genymotion开启就全部白屏解决方法

    Genymotion开启就整个界面全部白屏,包括菜单栏也白屏,解决方法: 很可能是显卡驱动有问题,用驱动人生或者驱动精灵更新显卡驱动就可以了. 目前开发者好用的模拟器有: 1.Genymotion 2 ...

  9. 在安装mysqli的时候,出现error: ext/mysqlnd/mysql_float_to_double.h: No such file or direc

    这个属于路径问题 我直接修改mysqli_api.h文件 # vim mysqli_api.h把第36行的#include "ext/mysqlnd/mysql_float_to_doubl ...

  10. Linux查看文件夹大小du

    du命令参数详解见: http://baike.baidu.com/view/43913.htm 下面我们只对其做简单介绍: 查看linux文件目录的大小和文件夹包含的文件数   统计总数大小   d ...