Hibernate学习(一)创建数据表

(1)生成数据库表的创建:

1             // 默认读取hibernate.cfg.xml文件
2             Configuration cfg = new Configuration().configure();
3
4             // 生成并输出sql到文件(当前目录)和数据库
5             SchemaExport export = new SchemaExport(cfg);
6
7             // 创建表结构,第一个true 表示在控制台打印sql语句,第二个true 表示导入sql语句到数据库
8             export.create(true, true); 

(2)Hibernate.cfg.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5
 6 <hibernate-configuration>
 7 <session-factory>
 8     <!-- 必须去配置的属性 -->
 9     <!-- 配置数据库连接的基本信息: -->
10     <property name="hibernate.connection.driver_class">
11         com.mysql.jdbc.Driver
12     </property>
13     <property name="hibernate.connection.url">
14         jdbc:mysql:///hibernate
15     </property>
16     <property name="hibernate.connection.username">root</property>
17     <property name="hibernate.connection.password">123456</property>
18     <!-- Hibernate的方言 -->
19     <!-- 生成底层SQL不同的 -->
20     <property name="hibernate.dialect">
21         org.hibernate.dialect.MySQLDialect
22     </property>
23
24     <!-- 可选的属性 -->
25     <!-- 显示SQL -->
26     <property name="hibernate.show_sql">true</property>
27     <!-- 格式化SQL -->
28     <property name="hibernate.format_sql">true</property>
29     <!-- hbm:映射 to DDL: create drop alter -->
30     <property name="hibernate.hbm2ddl.auto">update</property>
31
32
33     <!-- 通知Hibernate加载那些映射文件 -->
34     <mapping resource="cn/lonecloud/domain/User.hbm.xml" />
35     <mapping resource="cn/lonecloud/domain/Customer.hbm.xml" />
36     <mapping resource="cn/lonecloud/domain/Order.hbm.xml" />
37
38 </session-factory>
39 </hibernate-configuration>

(3)log4j.properties文件

 1 ### direct log messages to stdout ###
 2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 3 log4j.appender.stdout.Target=System.err
 4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 5 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 6
 7 ### direct messages to file mylog.log ###
 8 log4j.appender.file=org.apache.log4j.FileAppender
 9 log4j.appender.file.File=c\:mylog.log
10 log4j.appender.file.layout=org.apache.log4j.PatternLayout
11 log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
12
13 ### set log levels - for more verbose logging change ‘info‘ to ‘debug‘ ###
14
15 log4j.rootLogger=off, stdout 

(4)User.java

 1 package cn.lonecloud.domain;
 2
 3 import java.io.Serializable;
 4 import java.lang.reflect.Field;
 5 import java.lang.reflect.Method;
 6 import java.util.Date;
 7
 8 public class User implements Serializable,Cloneable {
 9
10       private String id;
11       private String name;
12       private String password;
13       private Date birthday;
14       public User(){
15           System.out.println("user");
16       }
17     public String getId() {
18         return id;
19     }
20     public void setId(String id) {
21         this.id = id;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public String getPassword() {
30         return password;
31
32     }
33     public void setPassword(String password) {
34         this.password = password;
35     }
36     public Date getBirthday() {
37         return birthday;
38     }
39     public void setBirthday(Date birthday) {
40         this.birthday = birthday;
41     }
42     @Override
43     public  Object clone() throws CloneNotSupportedException {
44          Class clazz = User.class;
45          User user =null;
46          try {
47              user = (User)clazz.newInstance();
48              /*user.setBirthday(this.birthday);
49              user.setId(this.id);
50              user.setPassword(this.password);
51              user.setName(this.name);*/
52              Field[] declaredFields = clazz.getDeclaredFields();
53              for(Field field :declaredFields){
54                   Class<?> parameterTypes = field.getType();
55                   String fieldName = field.getName();
56                   String methodName = "set"+fieldName.substring(0,1).toUpperCase()+field.getName().substring(1);
57                   Method method = clazz.getDeclaredMethod(methodName, parameterTypes);
58                   field.setAccessible(true);
59                   method.invoke(user,field.get(this));
60              }
61              return user;
62         } catch (Exception e) {
63             e.printStackTrace();
64         }
65          return null;
66     }
67
68
69 }

(5).user.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="cn.lonecloud.domain" >
 6     <class name="User" table="t_user"  select-before-update="false">
 7         <!--hibernate为我们生成主键id-->
 8         <id name="id">
 9             <generator class="uuid" />
10         </id>
11
12         <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
13         <property name="name" column="names"></property>
14         <property name="password"></property>
15         <property name="birthday" type="date"></property> <!--当为日期类型的时候标明date类型-->
16
17     </class>
18 </hibernate-mapping>

6.Customer.java

 1 package cn.lonecloud.domain;
 2
 3 import java.io.Serializable;
 4 import java.util.HashSet;
 5 import java.util.Set;
 6
 7 public class Customer implements Serializable {
 8
 9     private String id;
10
11     private String customerName;
12
13     private Set<Order> orders = new HashSet<Order>();
14
15     public String getId() {
16         return id;
17     }
18
19     public void setId(String id) {
20         this.id = id;
21     }
22
23     public String getCustomerName() {
24         return customerName;
25     }
26
27     public void setCustomerName(String customerName) {
28         this.customerName = customerName;
29     }
30
31     public Set<Order> getOrders() {
32         return orders;
33     }
34
35     public void setOrders(Set<Order> orders) {
36         this.orders = orders;
37     }
38
39
40 }

7.Customer.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="cn.lonecloud.domain" >
 6     <class name="Customer" table="t_customer" lazy="true">
 7         <!--hibernate为我们生成主键id-->
 8         <id name="id">
 9             <generator class="uuid" />
10         </id>
11
12         <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
13         <property name="customerName" column="customerName"></property>
14         <set name="orders" lazy="extra" fetch="join" cascade="all-delete-orphan">  <!-- lazy fetch -->
15             <key column="customer_id"></key>
16             <one-to-many class="cn.lonecloud.domain.Order"/>
17         </set>
18
19     </class>
20 </hibernate-mapping>

8.Order.java

 1 package cn.lonecloud.domain;
 2
 3 import java.io.Serializable;
 4
 5 public class Order  implements Serializable{
 6
 7      private String id;
 8
 9      private String orderNumber;
10
11      private float price;
12
13      private Customer customer;
14
15
16     public Customer getCustomer() {
17         return customer;
18     }
19
20     public void setCustomer(Customer customer) {
21         this.customer = customer;
22     }
23
24     public String getId() {
25         return id;
26     }
27
28     public void setId(String id) {
29         this.id = id;
30     }
31
32     public String getOrderNumber() {
33         return orderNumber;
34     }
35
36     public void setOrderNumber(String orderNumber) {
37         this.orderNumber = orderNumber;
38     }
39
40     public float getPrice() {
41         return price;
42     }
43
44     public void setPrice(float price) {
45         this.price = price;
46     }
47
48
49
50
51
52 }

9.Order.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="cn.lonecloud.domain" >
 6     <class name="Order" table="t_order" >
 7         <!--hibernate为我们生成主键id-->
 8         <id name="id">
 9             <generator class="uuid" />
10         </id>
11
12         <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
13         <property name="orderNumber" column="orderNumber"></property>
14         <property name="price" column="price"></property>
15         <many-to-one name="customer" class="cn.lonecloud.domain.Customer">
16            <column name="customer_id"/>
17         </many-to-one>
18     </class>
19 </hibernate-mapping>

时间: 2024-10-18 14:29:06

Hibernate学习(一)创建数据表的相关文章

如何使用hibernate创建数据表

引言:使用连接数据库来创建实体类,很快就学会了,但是对于怎么用hibernate创建数据表确实用了两天的时间,记录下这次学习的过程. 1.在一开始怎么都搜不到资料,后来才明白,在搜的时候要加正向的,用数据库创建实体类是反向,用实体类创建数据表是正向的,这样搜就可以了 2.在一开始的时候,总是执着于IDE和插件的问题,对于所遇到的问题没有进行深入的研究,导致浪费掉了大量的时间(最后还是没搞定) 3.总是执着于教程上的操作方式,到最后才发现,在新版本里的写法是不一样的,坑之又坑 4.浪费时间最长的是

oracle的学习 第二节:创建数据表

学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL/sql语言是结构化的查询语言. 2.分类: 数据定义语言  :create  alter  drop 数据操作语言: insert update delete 数据控制语言:select (二)创建数据库的两种方式 方式一:图形界面: 方式二:create  Datebase命令方法.(常用) 具

MySQL学习笔记_2_MySQL创建数据表(上)

MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][索引], - 字段名n列的类型[属性][索引], )[表属性][表字符集]: [表名称,字段名需要自己来命名] [SQL语句并不区分大小写,但是一个文件名:在Windows下不区分大小写,但是在 Linux/UNIX下是区分大小写的] [命名规则: 1.有意义(英文,英文组合或英文缩写) 2.自己定

MySQL学习笔记_4_MySQL创建数据表(下)

 MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines; #查看MySQL所支持的存储引擎storageengine 3. showvariables like 'table_type'; #查看默认数据表类型 MyISAM和InnoDB最常用的存储引擎[表类型] 4.指定表类型[使用哪一个存储引擎]: createtable ...() eng

MySQL学习笔记_3_MySQL创建数据表(中)

 MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] e.g. createtable if not exists t2(num int(5) zerofill,price float(7,2)zerofill,name varchar(10)); 注意:只能用在数值型字段,自动加上无符号属性 3.auto_increment[自增] #auto

关于度量快速开发平台(创建数据表,业务表)

转眼之间,我已在度量工作了20天,在这20天中,不多不少,有些收获. 前十天,在无尽的学习当中,熟悉快速开放平台,看文档,听同事讲解之后,做练习,十天下来, 对于这个平台已熟悉的差不多了,我不得不说这个平台的强大.一.平台简介 快速开发平台主要分为两种模式.一种是引擎模式,一种是生成源代码模式.在度量快速开发平台中,这两种模式都使用到了,但是生成源代码模式在度量快速开发平台里面得到了不一样的体现,更大幅度的提高了效率. 我们在平台中不管用什么方式构建(在平台中开发我们称之为构建)出来的应用(在平

mysql之创建数据库,创建数据表

写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的数据库. 1.创建一个学生信息表:学生id(自增,主键),姓名,年龄,性别,电话,籍贯,入学时间,所属班级id(外键). 2.创建一个学生成绩表:成绩id(自增,主键),科目,成绩,学生id(外键),创建时间. 3.创建一个学生班级表:班级id(主键,自增),班级名称. 创建表和数据库 #如果存在数

PHP全栈开发(七):PHP与MySQL存储交互(1.连接、创建数据库;创建数据表)

在Linux服务器中可以使用命令 mysqladmin -u root password beijing2007; 来修改MySQL的root用户的密码. 但是在我们自己安装了wampserver的电脑里面,可以到PhpMyAdmin这个网页页面去改,初始root密码同样为空. 然后我们用面向过程的MySQLi来进行数据库的链接,链接代码如下: <?php $servername = "localhost"; $username = "root"; $pass

SpringBoot+Mybatis 自动创建数据表(适用mysql)

Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样的 在数据库中先建好表配置好几个xml文件(一般都是复制粘贴上一个项目的),然后根据数据库中的表,生成实体类.DAO接口和Mapping映射文件当需要添加数据操作的时候,先在xml中写好CRUD语句,然后在DAO接口层写接口,最后到映射文件渐渐地,我忽然发现,这种方式越来越烦.改一个字段,要修改很多

创建数据表

创建数据表的语法规则如下: CREATE TABLE <表名> ( 字段名1, 数据类型, [约束条件], 字段名2, 数据类型, [约束条件], ... ); [例子]创建员工表 tb_emp1,结构如下 字段名称 数据类型 备注 id INT(11) 员工编号 name VARCHAR(25) 员工名称 deptId INT(11) 部门编号 salary FLOAT 员工薪资 mysql> CREATE DATABASE test_db; # 需要先创建数据库 mysql>