`

Hibernate 创建表 插入 查询 更新

阅读更多
Hibernate 创建表

1,首先数据库必须存在,然后在数据库中创建表(使用hibernate)

2,创建配置文件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>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</property>
		<property name="hibernate.connection.username">scott</property>
		<property name="hibernate.connection.password">tiger</property>
		
		<property name="dialect">org.hibernate.dialect.OracleDialect</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">create</property>

		<mapping resource="config/Event.hbm.xml" />

	</session-factory>

</hibernate-configuration>


注意:这个一定要加上
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


3,创建一个JavaBean ,Event类(javabean)
package events;

import java.util.Date;

public class Event {
    private Long id;
    private String title;
    private Date date;

    public Event() {}

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

4,创建Event类的配置文件Event.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>
	<class name = "events.Event" table ="events">
	<id name = "id" column = "events_id">
	  <generator class  = "native"/>
	</id>
	<property name = "date" type ="date" column = "event_date" />
    <property name = "title" type = "string" column = "event_title" />
	</class>
</hibernate-mapping>



5,创建测试类
package events;

import org.hibernate.cfg.Configuration;   
import org.hibernate.tool.hbm2ddl.SchemaExport;   
  
public class ExportDB {   
    public static void main(String[] args) {   
        Configuration configuration=new Configuration().configure("config/hibernate.cfg.xml");   
           
        SchemaExport schemaExport=new SchemaExport(configuration);   
        schemaExport.create(true, true); 

// 插入数据
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();

		Transaction tx = session.beginTransaction();
		Event theEvent = new Event();
		theEvent.setTitle("title");
		theEvent.setDate(new Date());
		session.save(theEvent);
		tx.commit();

		// //查询数据
		Query query = session.createQuery("from Event");
		List list = query.list();
		Iterator i = list.iterator();
		Event event = (Event) i.next();
		while (i.hasNext()) {
			System.out.println(event.getId());
			System.out.println(event.getTitle());
			System.out.println(event.getDate());
		}
		// 更新数据
		// Transaction tx1 = null;
		// try {
		// tx = session.beginTransaction();
		// Event obj = (Event )session.load(Event.class,event.getId());
		// obj.setTitle("title1");
		// session.update(obj);
		// }catch (Exception e){
		// e.printStackTrace();
		// }
		Transaction tx3 = null;
		String sql = "select * from Event";
		Query query1 = session.createSQLQuery(sql);
		// query1.setInteger(0, 1);
		List list1 = query.list();
		Iterator it = list1.iterator();
		tx3 = session.beginTransaction();
		while (it.hasNext()) {
			Event user = (Event) it.next();
			// 这里就是你要修改的字段啊,多个,你要都写出来
			user.setTitle("男");
			// 然后更新回去
			session.update(user);
		}
		tx3.commit();
	}  
    }   
} 


运行结果

2009-11-11 10:32:41 org.hibernate.cfg.Environment <clinit>
2009-11-11 15:12:06 org.hibernate.cfg.Environment <clinit>
信息: Hibernate 3.2.0
2009-11-11 15:12:06 org.hibernate.cfg.Environment <clinit>
信息: hibernate.properties not found
2009-11-11 15:12:06 org.hibernate.cfg.Environment buildBytecodeProvider
信息: Bytecode provider name : cglib
2009-11-11 15:12:06 org.hibernate.cfg.Environment <clinit>
信息: using JDK 1.4 java.sql.Timestamp handling
2009-11-11 15:12:06 org.hibernate.cfg.Configuration configure
信息: configuring from resource: config/hibernate.cfg.xml
2009-11-11 15:12:06 org.hibernate.cfg.Configuration getConfigurationInputStream
信息: Configuration resource: config/hibernate.cfg.xml
2009-11-11 15:12:06 org.hibernate.cfg.Configuration addResource
信息: Reading mappings from resource: config/Event.hbm.xml
2009-11-11 15:12:06 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
信息: Mapping class: events.Event -> events
2009-11-11 15:12:06 org.hibernate.cfg.Configuration doConfigure
信息: Configured SessionFactory: null
2009-11-11 15:12:06 org.hibernate.dialect.Dialect <init>
信息: Using dialect: org.hibernate.dialect.OracleDialect
2009-11-11 15:12:06 org.hibernate.tool.hbm2ddl.SchemaExport execute
信息: Running hbm2ddl schema export
2009-11-11 15:12:06 org.hibernate.tool.hbm2ddl.SchemaExport execute
信息: exporting generated schema to database
2009-11-11 15:12:06 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Using Hibernate built-in connection pool (not for production use!)
2009-11-11 15:12:06 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Hibernate connection pool size: 20
2009-11-11 15:12:06 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: autocommit mode: false
2009-11-11 15:12:06 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
2009-11-11 15:12:06 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: connection properties: {user=scott, password=****}
drop table events cascade constraints
drop sequence hibernate_sequence
create table events (events_id number(19,0) not null, event_date date, event_title varchar2(255), primary key (events_id))
create sequence hibernate_sequence
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.SchemaExport execute
信息: schema export complete
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider close
信息: cleaning up connection pool: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Using Hibernate built-in connection pool (not for production use!)
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Hibernate connection pool size: 20
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: autocommit mode: false
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
2009-11-11 15:12:07 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: connection properties: {user=scott, password=****}
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: RDBMS: Oracle, version: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC driver: Oracle JDBC driver, version: 10.1.0.2.0
2009-11-11 15:12:07 org.hibernate.dialect.Dialect <init>
信息: Using dialect: org.hibernate.dialect.OracleDialect
2009-11-11 15:12:07 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
信息: Using default transaction strategy (direct JDBC transactions)
2009-11-11 15:12:07 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
信息: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Automatic flush during beforeCompletion(): disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Automatic session close at end of transaction: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC batch size: 15
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC batch updates for versioned data: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Scrollable result sets: enabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC3 getGeneratedKeys(): disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Connection release mode: auto
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Default batch fetch size: 1
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Generate SQL with comments: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Order SQL updates by primary key: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
信息: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
2009-11-11 15:12:07 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
信息: Using ASTQueryTranslatorFactory
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Query language substitutions: {}
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: JPA-QL strict compliance: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Second-level cache: enabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Query cache: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory createCacheProvider
信息: Cache provider: org.hibernate.cache.NoCacheProvider
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Optimize cache for minimal puts: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Structured second-level cache entries: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Echoing all SQL to stdout
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Statistics: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Deleted entity synthetic identifier rollback: disabled
2009-11-11 15:12:07 org.hibernate.cfg.SettingsFactory buildSettings
信息: Default entity-mode: pojo
2009-11-11 15:12:07 org.hibernate.impl.SessionFactoryImpl <init>
信息: building session factory
2009-11-11 15:12:07 org.hibernate.impl.SessionFactoryObjectFactory addInstance
信息: Not binding factory to JNDI, no JNDI name configured
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
信息: Running hbm2ddl schema update
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
信息: fetching database metadata
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
信息: updating schema
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.TableMetadata <init>
信息: table found: SCOTT.EVENTS
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.TableMetadata <init>
信息: columns: [events_id, event_date, event_title]
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.TableMetadata <init>
信息: foreign keys: []
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.TableMetadata <init>
信息: indexes: [sys_c005412]
2009-11-11 15:12:07 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
信息: schema update complete
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into events (event_date, event_title, events_id) values (?, ?, ?)
Hibernate: select event0_.events_id as events1_0_, event0_.event_date as event2_0_, event0_.event_title as event3_0_ from events event0_
Hibernate: select event0_.events_id as events1_0_, event0_.event_date as event2_0_, event0_.event_title as event3_0_ from events event0_
Hibernate: update events set event_date=?, event_title=? where events_id=?



目录:



分享到:
评论

相关推荐

    hibernate入门数据简单插入

    标题"hibernate入门数据简单插入"指的是使用Hibernate框架进行数据库的基本操作,特别是数据的插入。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在应用程序中处理数据库对象,而无需直接编写...

    Hibernate基础和入门:新建表和插入表

    标题“Hibernate基础和入门:新建表和插入表”表明这篇内容将主要围绕Hibernate这一Java持久化框架的基础知识展开,重点讲解如何使用Hibernate创建数据库表以及进行数据插入操作。Hibernate是一个强大的ORM(对象...

    hibernate代码优化基于配置的多表查询

    例如,使用`Session.flush()`和`Session.clear()`控制事务边界,或配置`hibernate.jdbc.batch_size`来批量插入、更新和删除数据。 7. **避免N+1查询问题**: 当遍历一个集合并访问其关联属性时,可能会触发多次...

    Hibernate 多表映射关系配置

    在 Java 代码中,你可以创建 `User` 和 `Role` 实例,并通过 `add` 方法添加到对方的集合中,Hibernate 会自动处理中间表的插入和更新。 ```java User user = new User(); user.setUsername("testUser"); Role ...

    Hibernate将图片插入数据库

    1. **创建实体类**: 在Hibernate中,我们首先需要创建一个实体类来映射数据库表。对于图片数据,我们可以定义一个属性,例如`byte[] imageData`,并使用`@Lob`注解标记它,告诉Hibernate这是一个BLOB类型。此外,还...

    hibernate向oracle插入图片

    1. 首先,确保已安装并配置好Oracle数据库,创建一个可以存储图片的表,包含一个BLOB类型的字段。 2. 下载并导入Hibernate所需的jar包,这些包通常包括hibernate-core、hibernate-entitymanager等,确保项目中已添加...

    Hibernate插入数据

    本篇将详细探讨“Hibernate插入数据”的相关知识点,结合学习心得,深入理解并掌握其核心原理与实践技巧。 首先,Hibernate通过对象关系映射(ORM)技术,将数据库表与Java类关联起来,使得数据库操作可以通过对象...

    MyEclipse创建的Hibernate的例子

    例如,如果有一个名为`User`的表,我们可以创建一个对应的`User.java`类,使用`@Entity`注解标记为Hibernate实体,`@Id`注解标识主键字段。 三、映射文件配置 在Hibernate中,实体类与数据库表之间的映射是通过`....

    详解hibernate自动创建表的配置

    它不会创建新表,也不会更新现有表,但允许插入新数据。 配置这些选项通常在Hibernate的`hibernateProperties`中完成,例如: ```xml &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate4....

    Hibernate 单表实现树结构

    Hibernate提供了Session、SessionFactory、Query等接口,方便我们进行CRUD(创建、读取、更新、删除)操作。 在实现树结构时,我们需要定义一个实体类,该类代表树中的一个节点,比如一个部门或者一个目录。实体类...

    Hibernate多对多数据表操作-插入

    本篇文章将深入探讨使用Hibernate进行多对多数据表操作,特别是插入操作的细节。 在数据库设计中,多对多(Many-to-Many)关系是指一个实体可以与多个其他实体关联,反之亦然。例如,学生和课程之间的关系就是典型...

    Hibernate生产SQL语句

    接着,通过Hibernate的Session接口创建Criteria对象并添加条件,最后执行查询,获取结果。 总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,...

    超好用的hibernate查询工具类

    通过创建和使用这样一个超好用的Hibernate查询工具类,我们可以更高效地管理和操作数据库,降低开发复杂度,让开发者能够专注于业务逻辑,而不是底层的数据库交互。在大型项目中,这样的工具类是不可或缺的,它提升...

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    这篇博客"Hibernate学习一--注解方式自动建表"主要探讨了如何使用Hibernate的注解来实现数据库表的自动化创建。 在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被...

    改AHibernate 实现数据库 自动新增表参数

    1. **配置Hibernate的自动DDL生成**:默认情况下,Hibernate提供了`hibernate.hbm2ddl.auto`属性,可以设置为"create"、"update"等值,使得在应用启动时根据实体类自动创建或更新数据库表。为了实现自动新增参数,...

    解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题

    在使用Hibernate进行数据库操作时,有时会遇到一个常见的问题,即当从数据库中查询Date类型的数据并由Hibernate返回时,发现结果中的时分秒部分不正确。这个问题通常源于多个因素,包括日期时间的序列化与反序列化...

    spring+hibernate整合实现简单数据库添加记录

    Hibernate支持HQL(Hibernate查询语言)和SQL,可以方便地执行查询、更新和删除操作。 整合Spring和Hibernate,我们需要以下步骤: 1. **配置Hibernate**:首先,我们需要在Spring配置文件中引入Hibernate的相关库...

    hibernate的查询方式介绍和hibernate的批处理和连接池配置hibernate

    批处理是 Hibernate 中一种提高性能的方法,特别是在进行大量数据的插入、更新或删除时尤为明显。 - **默认行为** - 默认情况下,Hibernate 每次执行一条 SQL 语句后都会自动提交事务。 - **批量处理** - 可以...

    hibernate实验

    本实验手册介绍了 Hibernate 的基本概念和使用方法,包括创建数据库和表、创建 Hibernate 项目、使用反向工程快速生成 Java POJO 类、映射文件和 DAO、编写测试类和使用 HQL 语句查询数据等内容。

Global site tag (gtag.js) - Google Analytics