Hibernate学习(一)创建数据表
(1)生成数据库表的创建:
// 默认读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure(); // 生成并输出sql到文件(当前目录)和数据库
SchemaExport export = new SchemaExport(cfg); // 创建表结构,第一个true 表示在控制台打印sql语句,第二个true 表示导入sql语句到数据库
export.create(true, true);
(2)Hibernate.cfg.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!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.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql:///hibernate
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<!-- Hibernate的方言 -->
<!-- 生成底层SQL不同的 -->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property> <!-- 可选的属性 -->
<!-- 显示SQL -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化SQL -->
<property name="hibernate.format_sql">true</property>
<!-- hbm:映射 to DDL: create drop alter -->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 通知Hibernate加载那些映射文件 -->
<mapping resource="cn/lonecloud/domain/User.hbm.xml" />
<mapping resource="cn/lonecloud/domain/Customer.hbm.xml" />
<mapping resource="cn/lonecloud/domain/Order.hbm.xml" /> </session-factory>
</hibernate-configuration>
(3)log4j.properties文件
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=off, stdout
(4)User.java
package cn.lonecloud.domain; import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date; public class User implements Serializable,Cloneable { private String id;
private String name;
private String password;
private Date birthday;
public User(){
System.out.println("user");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password; }
public void setPassword(String password) {
this.password = password;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public Object clone() throws CloneNotSupportedException {
Class clazz = User.class;
User user =null;
try {
user = (User)clazz.newInstance();
/*user.setBirthday(this.birthday);
user.setId(this.id);
user.setPassword(this.password);
user.setName(this.name);*/
Field[] declaredFields = clazz.getDeclaredFields();
for(Field field :declaredFields){
Class<?> parameterTypes = field.getType();
String fieldName = field.getName();
String methodName = "set"+fieldName.substring(0,1).toUpperCase()+field.getName().substring(1);
Method method = clazz.getDeclaredMethod(methodName, parameterTypes);
field.setAccessible(true);
method.invoke(user,field.get(this));
}
return user;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }
(5).user.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="cn.lonecloud.domain" >
<class name="User" table="t_user" select-before-update="false">
<!--hibernate为我们生成主键id-->
<id name="id">
<generator class="uuid" />
</id> <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
<property name="name" column="names"></property>
<property name="password"></property>
<property name="birthday" type="date"></property> <!--当为日期类型的时候标明date类型--> </class>
</hibernate-mapping>
6.Customer.java
package cn.lonecloud.domain; import java.io.Serializable;
import java.util.HashSet;
import java.util.Set; public class Customer implements Serializable { private String id; private String customerName; private Set<Order> orders = new HashSet<Order>(); public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCustomerName() {
return customerName;
} public void setCustomerName(String customerName) {
this.customerName = customerName;
} public Set<Order> getOrders() {
return orders;
} public void setOrders(Set<Order> orders) {
this.orders = orders;
} }
7.Customer.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="cn.lonecloud.domain" >
<class name="Customer" table="t_customer" lazy="true">
<!--hibernate为我们生成主键id-->
<id name="id">
<generator class="uuid" />
</id> <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
<property name="customerName" column="customerName"></property>
<set name="orders" lazy="extra" fetch="join" cascade="all-delete-orphan"> <!-- lazy fetch -->
<key column="customer_id"></key>
<one-to-many class="cn.lonecloud.domain.Order"/>
</set> </class>
</hibernate-mapping>
8.Order.java
package cn.lonecloud.domain; import java.io.Serializable; public class Order implements Serializable{ private String id; private String orderNumber; private float price; private Customer customer; public Customer getCustomer() {
return customer;
} public void setCustomer(Customer customer) {
this.customer = customer;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getOrderNumber() {
return orderNumber;
} public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
} public float getPrice() {
return price;
} public void setPrice(float price) {
this.price = price;
} }
9.Order.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="cn.lonecloud.domain" >
<class name="Order" table="t_order" >
<!--hibernate为我们生成主键id-->
<id name="id">
<generator class="uuid" />
</id> <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
<property name="orderNumber" column="orderNumber"></property>
<property name="price" column="price"></property>
<many-to-one name="customer" class="cn.lonecloud.domain.Customer">
<column name="customer_id"/>
</many-to-one>
</class>
</hibernate-mapping>
Hibernate学习(一)创建数据表的更多相关文章
- oracle的学习 第二节:创建数据表
学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL ...
- 学习笔记之--Navicat Premium创建数据表
1.打开Navicat Premium,点击连接,选择MySQL,创建新连接.输入安装MySQL是的用户名和密码.点击确定. 2.admin数据连接已经创建成功.下面为admin新建数据库,输入数据库 ...
- MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
- Mysql学习(慕课学习笔记4)创建数据表、查看数据表、插入记录
创建数据表 Create table [if not exists] table_name(column_name data_type,…….) UNSIGNED 无符号SIGNED 有符号 查看创建 ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据表
创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name col ...
- 【spring boot】spring boot 2.0 项目中使用mysql驱动启动创建的mysql数据表,引擎是MyISAM,如何修改启动时创建数据表引擎为【spring boot 2.0】
默认创建数据表使用的引擎是MyISAM 2018-05-14 14:16:37.283 INFO 7328 --- [ restartedMain] org.hibernate.dialect.Dia ...
- mysql之创建数据库,创建数据表
写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
随机推荐
- linux tcp重传多会导致软中断在各个核很不均匀么?
网络不稳定,会导致某些核的软中断很高么?那么,下面我们来分析下这个论断的准确性. 环境描述: 网卡软中断进行了绑核.设备具备80个核,960个网卡中断,没开启bbr,全部是tcp呼叫. # cat / ...
- java8大基本数据类型
基本类型 字节数 位数 最大值 最小值 byte 1byte 8bit 2^7 - 1 -2^7 short 2byte 16bit 2^15 - 1 -2^15 int 4byte 32bit 2^ ...
- 用CSS写气泡
新学到的一个小效果 用CSS实现如下图效果,其中demo结构为:<div id="square"></div> 实现这个效果需要用到两个知识点: 1.用bo ...
- query返回值
总结:PDO::query($sql)返回值是一个对象,其中包括了你输入的sql语句 而fetch()方法执行成功则返回包含一条记录的数组,失败返回false. $rs = $pdo -> ...
- dnion的remap.conf文件
# # URL Remapping Config File # # Using remap.config allows you to accomplish two things: # # 1) Rew ...
- python监控微信报警
微信接口调用代码: #coding=utf8 import itchat from flask import Flask, request itchat.auto_login(enableCmdQR= ...
- oracle pl/sql如何定义变量
目的:如何在pl/sql中定义基本类型,引用类型,记录型变量? 以下plsql程序用的scott用户的dept,emp表. 定义基本类型的变量 set serveroutput on ; --使用基本 ...
- Java在已存在的pdf文件中生成文字和图片--基础
自我总结,有什么不足之处请告知,感激不尽!下一次总结pdf模板映射生成报表(应对多变的pdf报表需求,数据提供和报表生成解耦). 目的:在给定的pdf模板上生成报表,就需要知道最基本的操作:文字添加, ...
- 获取sap登陆用户名的中文描述
一.业务场景: 当通过MKPF-USNAM查找ADRP-NAME_LAST时,中间缺少一个表,即USR21.否则,MKPF-USNAM不能和ADRP-PERSNUMBER直接对等. 二.解决方法: D ...
- 什么是SSL
什么是SSL 简单来说,在我们使用的浏览器中都默认信任着全世界多个最权威的CA机构(证书颁发机构),如下图: 上图中,受信任的根证书颁发机构列表里的都是我们浏览器中默认信任的CA机构,我们只需要向他们 ...