制作Hibernate一个HelloWorld的例子,不知道怎么弄

Nadeal 2013-01-05 10:17:43
自己看书弄了个HelloWorld,插入数据到数据库没有成功没有成功。
Mymain类代码

package helloworld;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class MyMain{


//private static String configFile="/hibernate.cfg.xml";
private static Configuration configuration=new Configuration();
//private static final ThreadLocal<Session> threadLocal=new ThreadLocal<Session>();
//private static SessionFactory sessionFactory;

/*static{
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}

public static Session getSession(){
Session session=(Session)threadLocal.get();
if(session==null || !session.isOpen()){
session=sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}*/

public static void main(String[] args){


Session session=null;
Transaction trans=null;

try{
//session=HibernateSessionFactory.getSession();
//session=getSession();

SessionFactory sf=configuration.configure().buildSessionFactory();
session=sf.openSession();
trans=session.beginTransaction();
User[] users=new User[5];
for(int i=0;i<users.length;i++){
users[i]=new User("User"+i,"pwd");
session.save(users[i]);
System.out.println(i);
}

session.getTransaction().commit();
}catch(HibernateException e){
System.out.println("I am failed!");
if(trans!=null)
trans.rollback();
}finally{
if(session!=null)
session.close();
}
}
}



实体类代码

package helloworld;

public class User {

private int id;
private String username;
private String password;

public User(){
super();
}

public User(String username,String password){
super();
this.username=username;
this.password=password;
}

public int getId() {
return id;
}

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

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}


映射文件

<?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>
<class name="User" table="users">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="username" unique="true" not-null="true" length="20" column="username"></property>
<property name="password" unique="true" not-null="true" length="20" column="password"></property>
</class>

</hibernate-mapping>


配置文件

<?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="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping resource="helloworld/User.hbm.xml" />
</session-factory>
</hibernate-configuration>


运行后的信息

2013-1-5 21:59:09 org.hibernate.cfg.Environment <clinit>
信息: Hibernate 3.2.5
2013-1-5 21:59:09 org.hibernate.cfg.Environment <clinit>
信息: hibernate.properties not found
2013-1-5 21:59:09 org.hibernate.cfg.Environment buildBytecodeProvider
信息: Bytecode provider name : cglib
2013-1-5 21:59:09 org.hibernate.cfg.Environment <clinit>
信息: using JDK 1.4 java.sql.Timestamp handling
2013-1-5 21:59:09 org.hibernate.cfg.Configuration configure
信息: configuring from resource: /hibernate.cfg.xml
2013-1-5 21:59:09 org.hibernate.cfg.Configuration getConfigurationInputStream
信息: Configuration resource: /hibernate.cfg.xml
2013-1-5 21:59:09 org.hibernate.cfg.Configuration addResource
信息: Reading mappings from resource : helloworld/User.hbm.xml
2013-1-5 21:59:09 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
信息: Mapping class: User -> users
I am failed!



其实都是看书,敲出来的代码。求解,怎么插入数据呢
...全文
170 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落夏天 2013-01-06
  • 打赏
  • 举报
回复
给你发一个最基础的例子吧。你的例子我就不看了。你照着我的对对。形式差不多的一个例子
package com.briup.hibernate.basic;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import com.briup.hibernate.pojo.Student;


public class FirstHibernate {
	public static void main(String[] args) {	
		//1.使用configuration初始化hibernate读取配置文件
		Configuration config=new Configuration();
		config.configure();//默认加载hibernate.cfg.xml的配置文件
		//config.configure("hibernate.cfg.xml");//配置文件自定义配置
		//2构建sessionfactory
		SessionFactory fac=config.buildSessionFactory();
		
		//3生成session
		//session是一个接口,openSession实现的接口的对象
		Session session=fac.openSession();//使用默认session
		Session session2=fac.getCurrentSession();
		
		//System.out.println(session2);
		//4.开始事务
		Student s=new Student();
		s.setId(1);
		s.setName("briup");
		s.setAddress("briup");
		s.setAge(12); 
		Transaction tr=session.beginTransaction();
		session.save(s);//提交操作s
		//save delete update
		
		tr.commit();
		session.close();	
	}
}
package com.briup.hibernate.pojo;

import java.io.Serializable;

import javax.persistence.Column;

import org.hibernate.annotations.Entity;


public class Student implements Serializable{

	private Long id;
	private String name;
	private String address;
	private int age;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Student(long id, String name, String address, int age) {
		super();
		this.id = id;
		this.name = name;
		this.address = address;
		this.age = age;
	}
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", address=" + address
				+ ", age=" + age + "]";
	}
	
}
配置文件: student.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 package="com.briup.hibernate.pojo" >
	<class name="Student"  table="student" >
		<id name="id" column="id">
		</id>
		<property name="name" column="name"></property>
		<property name="address" column="address"></property>
		<property name="age" column="age"></property>
	</class>
</hibernate-mapping>
注意账户名密码以及数据库url别复制

<?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="dialect">
			org.hibernate.dialect.Oracle10gDialect
		</property>
		<property name="connection.url">
			jdbc:oracle:thin:@127.0.0.1:1521:xe
		</property>
		<property name="connection.username">briup</property>
		<property name="connection.password">briup</property>
		<property name="connection.driver_class">
			oracle.jdbc.driver.OracleDriver
		</property>
		<property name="show_sql">true</property><!-- 鏄剧ずsql璇彞-->
		<property name="format_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<property name="current_session_context_class">thread</property>
		
		<mapping resource="com/briup/hibernate/pojo/Student.hbm.xml	</session-factory>
</hibernate-configuration>
Nadeal 2013-01-06
  • 打赏
  • 举报
回复
求助解决!

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧