Hibernate---数据操作示例BY实体类注释
通过实体的映射文件创建表的示例,除了基本jar包外,还需要jar包如下
ejb3-persistence.jar、hibernate-annotations.jar这两个包均在hibernate-annotations压缩文件下
下载,密码:o30j;官网下载:https://sourceforge.net/,搜索Hibernate,选择Hibernate,点击Files,选择需要的依赖jar包(hibernate-annotations);基本jar包下载可阅读Hibernate---开发环境搭建文章;
例子
创建一个Student.java实体注释类:该类需要一个无参的构造函数,以及属性的get/set方法,而其中的注释导入的则是javax.persistence.*包。具体注释简介见Hibernate---实例类注释。
@Entity
@DynamicInsert(true)
@DynamicUpdate(true)
@Table(name = "students")
public class Students implements Serializable { private static final long serialVersionUID = 2257468553009291835L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id; @Column(name="name",columnDefinition="varchar(50) default ''" )//需要设置默认值,default中的''不能忽略,并且必须指定数据类型值。特别提示,不能有nullable=false设置
private String name; @Column(name="age",nullable=false)
private int age;
public Students() { } public Students(String name, int age) {
super();
this.name = name;
this.age = 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;
} }
@DynamicInsert(true) @DynamicUpdate(true):这两个类注释用于动态生成sql语句,即优化sql代码,提高执行sql效率。默认值为false
举例说明:
添加对象时
若没有设置@DynamicInsert(true),如果该例子中添加的student对象没有name值,SQL语句仍然是insert into students (age, name) values (?, ?),并且保存到数据库中的student记录没有保存name默认值。
若设置@DynamicInsert(true),如果该例子中添加的student对象没有name值,那么SQL语句则是insert into students (age) values (?),并且保存到数据库中的student记录保存了name默认值。
修改对象时
若没有设置 @DynamicUpdate(true),如果该例子中只修改了student对象的name值,SQL语句仍然是update students set name=?, age=? where id = ?;
若设置 @DynamicUpdate(true),如果该例子中只修改了student对象的name值,那么SQL语句则是update students set name=? where id = ?;
特别注意:@DynamicInsert添加记录时,设置了default="' '” 默认值的字段(属性)不能设置nullable=false非空属性。nullable=false则表示该字段不能为空,在运行时,@DynamicInsert不生效,非空字段为空,会报错。
配置Hibernate配置文件hibernate.cfg.xml(数据库连接信息),将该文件放到src目录下。注意,与实体注释类关联的mapping标签属性是class

<!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License:
GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the
lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. -->
<!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.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- 驱动程序名 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库名称 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernateTest</property>
<!-- 用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 密码 -->
<property name="hibernate.connection.password">123456</property> <!-- 显示SQL语句 -->
<property name="show_sql">true</property>
<!-- 格式化输出SQL语句 -->
<property name="format_sql">true</property> <property name="hbm2ddl.auto">create</property><!-- 在实际情况中,该值应为update -->
<!-- 与实体注释类关联 -->
<mapping class="com.hibernate.study.entity.Students" /> </session-factory>
</hibernate-configuration>

一个测试类

public class StudyTest { private static SessionFactory sessionFactory; // 会话工厂对象
private static Session session;
private static Transaction transcction; public static void main(String[] args) {
// 创建配置对象
Configuration config = new Configuration().configure();
// 创建会话工厂对象
sessionFactory = config.buildSessionFactory();
// 会话对象
session = sessionFactory.openSession();
// 开启事务
transcction = session.beginTransaction();
// 生成学生对象
Student stu = new Student("疾风剑豪", 10);
session.save(stu); // 保存对象到数据库
transcction.commit(); // 提交事务
session.close(); // 关闭会话
sessionFactory.close(); // 关闭会话工厂
} }

至此还需要一个log4j.properties配置文件
Hibernate---数据操作示例BY实体类注释的更多相关文章
- 第八章 Hibernate数据操作技巧
第八章 Hibernate数据操作技巧8.1 分组统计数据 语法:[select]... from ...[where] [group by...[having...]] [order by ...
- spring boot: spring-data-jpa (Repository/CrudRepository) 数据库操作, @Entity实体类持久化
SpringBoot实现的JPA封装了JPA的特性, Repository是封装了jpa的特性(我是这么理解的) 1在pom.xml引入mysql, spring-data-jpa依赖 2.在src/ ...
- java-redis集合数据操作示例(三)
redis系列博文,redis连接管理类的代码请跳转查看<java-redis字符类数据操作示例(一)>. 一.集合类型缓存测试类 public class SetTest { /** * ...
- java-redis列表数据操作示例(二)
接上篇博文<java-redis字符类数据操作示例(一)>,redis连接管理类的代码请跳转查看. 一.列表类型缓存测试类 public class ListTest { /** * 主测 ...
- 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)
开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...
- java:redis(java代码操作redis,实体类mapper生成器(generator))
1.redis_demo Maven ItemMapper.xml: <?xml version="1.0" encoding="UTF-8" ?> ...
- 使用Sql语句快速将数据表转换成实体类
开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...
- Hibernate---数据操作示例BY实体映射文件
创建一个Student.java类:该类需要一个无参的构造函数,以及属性的get/set方法 public class Student implements Serializable { privat ...
- 泛型的运用(用于查询数据后DataTable转实体类)
2019.8.14 更新 补全了DataTable转泛型集合的方法: /// <summary> /// DataTable转实体类集合 /// </summary> /// ...
随机推荐
- zabbix 编译安装指导
zabbix 编译安装 下载 安装 安装后的配置 下载源码包 zabbix官网:https://www.zabbix.com/ zabbix下载:https://www.zabbix.com/down ...
- SPFieldLookupValue class
using System; using Microsoft.SharePoint; namespace ConsoleApp { class Program { static void Main(st ...
- 关于 supersocket 不能通过Bootstrap 启动
App.config内容 <configSections> <section name="superSocket" type="SuperSocke ...
- expres webpack es6 babel 构建多页系统开发架构
开始写点什么... 只是一个思路........
- 整理齐全 - Vultr VPS自定义安装Windows ISO(2003/2012/2008/WIN7)
最近公司有几个项目是需要在Windows VPS服务器中运行调试的,但是公司给予的成本有限,所以只能在Linux VPS中考虑,毕竟Linux服务器相比Windows系统便宜很多.开始我们运维部门考虑 ...
- 洛谷 P1080 国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...
- TP5.1:模板赋值与变量输出
模板赋值:assign() 模板渲染:fetch() 前提准备: 1.在app/index/controller下建立一个控制器,名为Templates.php,里面有test1和test2方法,并且 ...
- ubuntu16.04安装中文输入法(转)
转自: https://zhidao.baidu.com/question/619127469641961052.html ubuntu没有预装中文输入法,需要自己安装 sudo apt instal ...
- VR社交软件测试-AltspaceVR
该VR社交软件中的主界面主要分为,Events:事件:Activities:多人游戏:Words:别人创建的虚拟世界.进入游戏后可以进入场景与世界各地的人进行交谈,以虚拟3D人物的方式显示用户,具有较 ...
- CRUD全栈式编程架构总结
这里放出实例代码 github.com/SkyvenXiong/HCC