第一个Hibernate应用
来源:互联网 发布:淘宝远程付款安全吗 编辑:程序博客网 时间:2024/06/17 08:36
1.创建配置文件
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="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/sampledb</property> <property name="connection.username">root</property> <property name="connection.password">1234</property> <property name="show_sql">true</property> <mapping resource="com.mypack/Customer.hbm.xml" /> </session-factory></hibernate-configuration>
2.创建持久化类
Customer.java:
package com.mypack;import java.util.Date;public class Customer implements java.io.Serializable { private long id; private String name; private Date registeredTime; private int age; private char sex; private boolean married; private String description; public Customer() { } public Customer(String name, int age) { this.name = name; this.age = age; } public Customer(String name, Date registeredTime, int age, char sex, boolean married, String description) { this.name = name; this.registeredTime = registeredTime; this.age = age; this.sex = sex; this.married = married; this.description = description; } public long getId() { return this.id; } private void setId(long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Date getRegisteredTime() { return this.registeredTime; } public void setRegisteredTime(Date registeredTime) { this.registeredTime = registeredTime; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public char getSex() { return this.sex; } public void setSex(char sex) { this.sex = sex; } public boolean isMarried() { return this.married; } public void setMarried(boolean married) { this.married = married; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); buffer.append("name").append("='").append(getName()).append("' "); buffer.append("registeredTime").append("='").append(getRegisteredTime()).append("' "); buffer.append("age").append("='").append(getAge()).append("' "); buffer.append("married").append("='").append(isMarried()).append("' "); buffer.append("description").append("='").append(getDescription()).append("' "); buffer.append("]"); return buffer.toString(); }}
注:Hibernate要求持久化类必须提供一个不带参数的默认构造方法。
3.创建数据库Schema
drop table if exists CUSTOMERS;create table CUSTOMERS (ID bigint not null auto_increment, NAME varchar(15) not null unique, REGISTERED_TIME timestamp, AGE integer not null check (AGE>10), SEX char(1), IS_MARRIED bit, DESCRIPTION text, primary key (ID));create index IDX_REGISTERED_TIME on CUSTOMERS (REGISTERED_TIME);
4.创建对象-关系映射文件
Customer.hbm.xml:
<?xml version="1.0"?><!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="com.mypack.Customer" table="CUSTOMERS" > <id name="id" type="long" column="ID" > <meta attribute="scope-set">private</meta> <generator class="native"/> </id> <property name="name" type="string" > <meta attribute="use-in-tostring">true</meta> <column name="NAME" length="15" not-null="true" unique="true" /> </property> <property name="registeredTime" type="timestamp" > <meta attribute="use-in-tostring">true</meta> <column name="REGISTERED_TIME" index="IDX_REGISTERED_TIME" sql-type="timestamp" /> </property> <property name="age" type="int"> <meta attribute="use-in-tostring">true</meta> <column name="AGE" check="AGE>10" not-null="true"/> </property> <property name="sex" type="char" column="SEX"/> <property name="married" type="boolean" column="IS_MARRIED"> <meta attribute="use-in-tostring">true</meta> </property> <property name="description" type="string"> <meta attribute="use-in-tostring">true</meta> <column name="DESCRIPTION" sql-type="text"/> </property> </class> </hibernate-mapping>
注:在<class>元素中,<id>子元素必须存在且只能存在一次,必须先定义<id>子元素,再定义<property>子元素。
<id>子元素设定持久化类的OID和表的主键的映射,<property>子元素设定类的属性和表的字段的映射。
5.通过Hibernate API操作数据库
package com.mypack;import org.hibernate.*;import org.hibernate.cfg.Configuration;import java.io.*;import java.sql.Time;import java.util.*;public class BusinessService{ public static SessionFactory sessionFactory; static{ try{ Configuration config = new Configuration().configure(); config.addClass(Customer.class); StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(config.getProperties()); sessionFactory = config.buildSessionFactory(builder.build()); }catch(RuntimeException e){e.printStackTrace();throw e;} } public void saveCustomer(Customer customer){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.save(customer); tx.commit(); }catch (RuntimeException e) { if (tx != null) { tx.rollback(); } throw e; } finally { session.close(); } } public Customer loadCustomer(Long id){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Customer customer=(Customer)session.get(Customer.class,id); tx.commit(); return customer; }catch (RuntimeException e) { if (tx != null) { tx.rollback(); } throw e; } finally { session.close(); } } public void printCustomer(Customer customer){ System.out.println(customer); } public void test(){ Customer customer=new Customer(); customer.setName("Tom"); customer.setAge(new Integer(21)); customer.setSex(new Character('M')); customer.setMarried(new Boolean(false)); customer.setDescription("I am very honest."); saveCustomer(customer); customer=loadCustomer(customer.getId()); printCustomer(customer); } public static void main(String args[]){ new BusinessService().test(); sessionFactory.close(); }}
0 0
- Hibernate第一个应用
- 第一个Hibernate应用
- Hibernate应用(一):第一个Hibernate应用程序
- Hibernate应用(一):第一个Hibernate应用程序
- Hibernate应用(一):第一个Hibernate应用程序
- 我的第一个Hibernate应用:Hibernate__002
- 《精通Hibernate》学习(1)——第一个Hibernate应用
- Hibernate学习笔记之手工创建第一个Hibernate应用
- SS1.1_Hibernate_ByManual 手工创建第一个Hibernate应用
- 第一个Hibernate程序
- 第一个hibernate项目
- 第一个hibernate程序
- hibernate第一个程序
- 第一个hibernate项目
- 第一个Hibernate
- 第一个hibernate程序
- 第一个hibernate程序
- 第一个hibernate项目
- Python“Non-ASCII character 'xe5' in file”报错问题
- 我的2016代码自动生成器--IoRyYBigProject
- linux下如何隐藏进程(ps/top) 和找到linux进程路径
- code signing is required for product type 'Application' in SDK 'iOS 9.1'
- web前端之路(3)--sublime的环境搭建
- 第一个Hibernate应用
- Android Http请求头与响应头
- Effective Java 读书笔记或学习笔记
- centos 下更改ftp登录根目录
- C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取
- fragment认识
- MySQL临时表
- BZOJ 3524: [Poi2014]Couriers|主席树
- 机器学习的三个基本量纲 Three Fundamental Dimensions for Thinking About Machine Learning Systems