hibernate配置文件及增删改查

 

配置文件
hibernate核心配置文件hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> root root jdbc:mysql://localhost:3306/poi?useUnicode=true&characterEncoding=UTF-8 com.mysql.jdbc.Driverorg.hibernate.dialect.MySQLDialect

	<!-- 配置本地事务(No CurrentSessionContext configured!) -->
	<property name="hibernate.current_session_context_class">thread</property>
	
	<!-- 2. 调试相关 -->
	<!--是否显示数据库语句在项目部署后要设置为fals提高 项目运行效率-->
	<property name="show_sql">true</property>
	<!--格式化sql语句-->
	<property name="format_sql">true</property>


	<!-- 3. 添加实体映射文件 -->
	<mapping resource="User.hbm.xml"/>
</session-factory>
  • 实体映射文件(*.hbm.xml) 有多少实体类就有多少的*.hbm.xml <?xml version="1.0" encoding="UTF-8"?>
    <!--属性-->
	<property name="userName" type="java.lang.String"
		column="user_name">
	</property>
	<property name="userPwd" type="java.lang.String"
		column="user_pwd">
	</property>

	<property name="realName" type="java.lang.String"
		column="real_name">
	</property>
	<property name="sex" type="java.lang.String" column="sex">
	</property>

	<property name="birthday" type="java.sql.Date"
		column="birthday">
	</property>
	<!--insert="false" update="false"不维护  由hibernate自动处理-->
	<property insert="false" update="false" name="createDatetime" type="java.sql.Timestamp"
		column="create_datetime">
	</property>
	<property name="remark" type="java.lang.String"
		column="remark">
	</property>
</class>

使用hibernate实现增删改查 实体类

package com.zking.entity;

import java.io.Serializable;

public class User implements Serializable {

private static final long serialVersionUID = -3363120264501521428L;

private Integer id;
private String userName;
private String userPwd;

private String realName;
private String sex;
private java.sql.Date birthday;

private java.sql.Timestamp createDatetime;
private String remark;

public User() {
    super();
}

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserPwd() {
    return userPwd;
}

public void setUserPwd(String userPwd) {
    this.userPwd = userPwd;
}

public String getRealName() {
    return realName;
}

public void setRealName(String realName) {
    this.realName = realName;
}

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public java.sql.Date getBirthday() {
    return birthday;
}

public void setBirthday(java.sql.Date birthday) {
    this.birthday = birthday;
}

public java.sql.Timestamp getCreateDatetime() {
    return createDatetime;
}

public void setCreateDatetime(java.sql.Timestamp createDatetime) {
    this.createDatetime = createDatetime;
}

public String getRemark() {
    return remark;
}

public void setRemark(String remark) {
    this.remark = remark;
}

@Override
public String toString() {
    return "User [id=" + id + ", userName=" + userName + ", userPwd=" + userPwd + ", realName=" + realName
            + ", sex=" + sex + ", birthday=" + birthday + ", createDatetime=" + createDatetime + ", remark="
            + remark + "]";
}

  • 这里写一个测试用来增加
    1.对hibernate.config.xml建模
    2.通过建模获得的config文件类,获取所配置的sessionfactory
    3.获取session会话
    4.开启事务
    5.操作数据库
    6.提交事务
    7.关闭session会话
    public static void main(String[] args) {
    /**
    * 1.对hibernate.config.xml建模
    * 2.通过建模获得的config文件类,获取所配置的sessionfactory
    * 3.获取session会话
    * 4.开启事务
    * 5。操作数据库
    * 6.提交事务
    * 7.关闭session会话
    */
    // 1.对hibernate.config.xml建模
    Configuration configure = new Configuration().configure(“hibernate.cfg.xml”);
    // 2.通过建模获得的config文件类,获取所配置的sessionfactory
    SessionFactory sessionFactory = configure.buildSessionFactory();
    // 3.获取session会话
    Session session = sessionFactory.openSession();
    //4.开启事务
    Transaction transaction = session.beginTransaction();
    //5.操作数据库
    User user=new User();
    user.setBirthday(new Date(new java.util.Date().getTime()));
    user.setRealName(“123”);
    user.setRemark(“123”);
    user.setSex(“男”);
    user.setUserName(“123”);
    user.setUserPwd(“213”);
    //增加操作
    session.save(user);
    //6.提交事务
    transaction.commit();
    //7.关闭会话
    session.close();

}
删除

User user=new User();
user.setId(3);
//删除用户
session.delete(user);
查询
//查询数据库
List list = session.createQuery(“from User”).list();

for (User o: list) {
    System.out.println(o);
}

效果

修改
User user = session.get(User.class, 2);
user.setRealName(“花花”);
System.out.println(user.getRealName());
自动生成的sql语句

结果

SessionFactory对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个Configuraion的实例来创建

Session对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个Session对象 才会获取一个JDBC的Connection(或一个Datasource) 对象,因此假若不使用的时候它不消费任何资源。

Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值