精通Hibernate:第一个Hibernate应用(1)
分享于 点击 43388 次 点评:43
精通Hibernate:第一个Hibernate应用(1)
一、在Java应用中使用Hibernate的步骤
- 创建Hibernate的配置文件
- 创建持久化类
- 创建对象-关系映射文件
- 通过Hibernate API编写访问数据库的代码
二、Helloapp应用的结构
三、Hibernate的配置文件(hibernate.properties)
- hibernate.dialect=org.hibernate.dialect.MySQLDialect
- hibernate.connection.driver_class=com.mysql.jdbc.Driver
- hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDB
- hibernate.connection.username=root
- hibernate.connection.password=1234
- hibernate.show_sql=true
四、创建持久化类Customer
- 持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。
- 持久化类有一个id属性,用来惟一标识Customer类的每个对象。在面向对象术语中,这个id属性被称为对象标识符OID,Object Identifier),通常它都用整数表示
- Hibernate要求持久化类必须提供一个不带参数的默认构造方法
- package mypack;
- import java.io.Serializable;
- import java.sql.Date;
- import java.sql.Timestamp;
- public class Customer implements Serializable {
- private Long id;
- private String name;
- private String email;
- private String password;
- private int phone;
- private String address;
- private char sex;
- private boolean married;
- private String description;
- private byte[] image;
- private Date birthday;
- private Timestamp registeredTime;
- public Customer(){}
- public Long getId(){
- return id;
- }
- private void setId(Long id){
- this.id = id;
- }
- public String getName(){
- return name;
- }
- public void setName(String name){
- this.name=name;
- }
- public String getEmail(){
- return email;
- }
- public void setEmail(String email){
- this.email =email ;
- }
- public String getPassword(){
- return password;
- }
- public void setPassword(String password){
- this.password =password ;
- }
- public int getPhone(){
- return phone;
- }
- public void setPhone(int phone){
- this.phone =phone ;
- }
- public String getAddress(){
- return address;
- }
- public void setAddress(String address){
- this.address =address ;
- }
- public char getSex(){
- return sex;
- }
- public void setSex(char sex){
- this.sex =sex ;
- }
- public boolean isMarried(){
- return married;
- }
- public void setMarried(boolean married){
- this.married =married ;
- }
- public String getDescription(){
- return description;
- }
- public void setDescription(String description){
- this.description =description ;
- }
- public byte[] getImage() {
- return this.image;
- }
- public void setImage(byte[] image) {
- this.image = image;
- }
- public Date getBirthday() {
- return this.birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public Timestamp getRegisteredTime() {
- return this.registeredTime;
- }
- public void setRegisteredTime(Timestamp registeredTime) {
- this.registeredTime = registeredTime;
- }
- }
注意:
- getXXX()和setXXX()方法可以采用任意的访问级别,他的命名规则必须符合特定的命名规则,“get”和“set”后面紧跟属性的名字,并且属性名的首字母为大写,如name属性的get方法为getName()。
- 如果持久化类的属性为boolean类型,那么它的get方法名可以用get做前缀也可以用is做前缀。
五、创建数据库Schema
- drop database if exists SAMPLEDB;
- create database SAMPLEDB;
- use SAMPLEDB;
- create table CUSTOMERS (
- ID bigint not null primary key,
- NAME varchar(15) not null,
- EMAIL varchar(128) not null,
- PASSWORD varchar(8) not null,
- PHONE int ,
- ADDRESS varchar(255),
- SEX char(1) ,
- IS_MARRIED bit,
- DESCRIPTION text,
- IMAGE blob,
- BIRTHDAY date,
- REGISTERED_TIME timestamp
- );
用户点评