hibernate第一个例子-保存对象

3.hibernate第一个例子-保存对象

使用hibernate框架需要导入的jar包:

antlr-2.7.6

backport-util-concurrent

c3p0-0.9.1

commons-collections-3.1    apache集合帮助的包

commons-logging-1.1.1日志

dom4j-1.6.1解析XML

ehcache-1.5.0缓存框架

hibernate3hibernate核心包

javassist-3.9.0.GA代理模式工具包,解决懒加载问题

jta-1.1

log4j日志

mysql-connector-java-5.1.10-bin数据库连接

slf4j-api-1.5.8

slf4j-log4j12

Person-持久化类

/**
 * 对象的序列化的作用:让对象在网络上传输,以二进制的形式传输
 * Serializable标示接口
 */
public class Person implements Serializable{
    private Long pid;
    private String pname;
    private String psex;
    set,get方法
}

映射文件 Person.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 
        用来描述一个持久化类
        name  类的全名
         table 对应的表名,可以不写  默认值和类名一样 
         catalog  数据库的名称  一般不写
     -->
    <class name="cn.itcat.domain.Person">
        <!-- 
            标示属性  和数据库中的主键对应
            name  属性的名称
            column 列的名称
            length 表中字段长度
         -->
        <id name="pid" column="pid" length="200" type="java.lang.Long">
            <!-- 
                主键的产生器
              就该告诉hibernate容器用什么样的方式产生主键-->
            <generator class="increment"></generator>
        </id>
        <!-- 描述一般属性 -->
        <property name="pname" column="pname" length="20" type="string"></property>
        <property name="psex" column="psex" length="10" type="java.lang.String"></property>
    </class>
</hibernate-mapping>

配置文件 hibernate.cfg.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <!--一个session-factory只能连接一个数据库-->
    <session-factory>
        <!--数据库的用户名-->
        <property name="connection.username">root</property>
        <!--密码-->
        <property name="connection.password">root</property>
        <!-- url-->
        <property name="connection.url">
            jdbc:mysql://localhost:3306/hibernateDay01
        </property>
            <!-- 
                "hbm2ddl.auto"作用:根据持久化类和映射文件生成表
                validate 只校验
                create-drop启动hibernate创建,关闭hibernate销毁表
                create 启动hibernate容器生成表
                update 启动hibernate容器时检查持久化类和表对不对应,如果不对应,创建表,对应的话,验证。
            -->
        <property name="hbm2ddl.auto">update</property>
            <!-- 
                显示hibernate内部生成的sql语句
            -->
        <property name="show_sql">true</property>
        <mapping resource="cn/itcat/domain/Person.hbm.xml" />
 
    </session-factory>
</hibernate-configuration>

测试

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
 
public class PersonTest {
    @Test
    public void testCreateTable(){ //测试数据库中会不会根据持久化类和映射文件生成表
        Configuration configuration = new Configuration();
        configuration.configure();  //加载配置文件1、该配置文件必须放在classpath下2、名称必须为hibernate.cfg.xml
        configuration.buildSessionFactory();
        }
    @Test
    public void testSavePerson(){
        Configuration configuration = new Configuration();
        configuration.configure();  
        SessionFactory factory = configuration.buildSessionFactory();
        
        Session session = factory.openSession();
        Transaction transaction = session.beginTransaction();
        
        Person person = new Person();
        person.setPname("班长2");
        person.setPsex("女");
        
        /**
         * 参数必须持久化对象
         */
        session.save(person);
        
        transaction.commit();
        session.close();
    }
}
时间: 2024-10-27 07:25:49

hibernate第一个例子-保存对象的相关文章

关于hibernate用save方法保存对象所遇到的一个问题

执行数据库循环保存操作时,开始想只new一个对象,这样会节省一些空间,所以在for循环外面执行new操作,在for循环里面则执行设值操作,然后每次都提交事务到数据库.如下图: 结果发现数据库里只插入了一条数据,查看sql语句才发现问题的所在,sql语句如下: hibernate只执行了一次insert操作,剩下的都是更新操作,所以最后表里面只有一条数据. 然后我就进行了修改,在每一次for循环里都new一个对象,如下图: 执行插入操作后查看sql语句,发现这次就插入成功了,执行了5次的inser

Hibernate第一个例子

我们先搭建这样的一个架构 里面包括实体类,实现类, 大配置, 小配置(映射文件), 以及架包 实体类我们就不重点介绍了 我们先把我们所需要用到的架包导入进来 我们先在src根目录下新建一个文件夹名为lib, 把架包引入然后再把所有的架包Bulid path以下 各个架包代表的含义 然后创建Hibernate配置文件(注意要在src根目录下) 创建映射文件(与实体类在同一个包下) 代码展现 实体类 结合上述运行出来正确显示为: 扩展 查询数据 public static void select()

Hibernate学习的第一个例子

这是本人学习Hibernate的第一个例子: 1,先配置数据库驱动,点击myeclipse的myeclipse Database Explore,选择相应的数据库,进行配置,完成之后退出. 2,给项目添加支持Hibernate的功能,使用到的jar包有如下的: 进行了一系列的选项之后,到sessionfactory这一项,不选.然后点击完成. 3,配置表到java类的映射.点击右上方的myeclipse中的myeclipse database expore视图,选择数据驱动,选中要操作的表,然后

atitit.spring hibernate的事务机制 spring不能保存对象的解决

atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能. . log黑头马sql语言.. sessionFactory.getCurrentSession().update(user); 中间走ok兰..log黑头也有累.. 在Spring中使用Hibernate.假设我们配置了TransactionManager.那么我们就不应该调用SessionFactory的openSession()来获得S

Hibernate (开放源代码的对象关系映射框架)

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久

Hibernate (开放源代码的对象关系映射框架)介绍

Hibernate (开放源代码的对象关系映射框架) 编辑 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hiberna

Hibernate 第一例

简单的hibernate例子,不涉及jsp页面,直接java代码运行 java类:HibernateUtil ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil {         

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

Android使用SharedPreferences保存对象

核心原理: 对象序列化 步骤 1.要保存的对象实现序列化Serializable 2.将序列化的对象保存String(本文的做法是保存为byte数组在转为16进制的String类型保存起来) 3.将保存的String反序列化为对象 下面是完整代码 步骤1.要保存的对象实现序列化Serializable public class Sertest implements Serializable{ private String name; private int age; } 步骤2.将序列化的对象保