论坛首页 Java企业应用论坛

入门例子介绍

浏览 3433 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-03-30  
环境:JBUILDERX+SQLSERVER2000

hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:Microsoft:sqlserver://192.168.100.2:1433;databasename=HENRY;SelectMethod=cursor</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">123456</property>
<property name="dialect">net.sf.hibernate.dialect.SybaseDialect</property>
<property name="show_sql">true</property>
<property name="transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
<property name="hibernate.cache.provider_class">
net.sf.hibernate.cache.HashtableCacheProvider
</property>
<mapping resource="mypackage/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>


Person.hbm.xml:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>

	<class name="mypackage.Person">
	    <!--hibernate为我们生成主键id-->
		<id name = "id" unsaved-value = "null">
			<generator class="uuid.hex"/>
		</id>
		
	    <!--默认把类的变量映射为相同名字的表列,当然我们可以修改其映射方式-->
		<property name="name"/>
		<property name="address"/>
	</class>
</hibernate-mapping>



package mypackage;

public class Person {

    String name;

/**
Sets the value of field name.
@param name value of field name
*/

    public void setName(String value); {
        this.name=value;
    }

/**
Gets the value of field name.
@return value of field name
*/

    public String getName(); {
        return name;
    }

    String address;

/**
Sets the value of field address.
@param address value of field address
*/

    public void setAddress(String value); {
        this.address=value;
    }

/**
Gets the value of field address.
@return value of field address
*/

    public String getAddress(); {
        return address;
    }

    String id;

/**
Sets the value of field id.
@param id value of field id
*/

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

/**
Gets the value of field id.
@return value of field id
*/

    public String getId(); {
        return id;
    }
}


JSP:TEST.JSP
<%@ page contentType="text/html; CHARSET=utf8" %>
<%@ page import="net.sf.hibernate.Session"%>
<%@ page import="net.sf.hibernate.Transaction"%>
<%@ page import="net.sf.hibernate.SessionFactory"%>
<%@ page import="net.sf.hibernate.cfg.Configuration"%>
<%@ page import="net.sf.hibernate.tool.hbm2ddl.SchemaExport"%>
<%@ page import="mypackage.*"%>
<html>
<head>
<title>
test
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
Configuration conf= new Configuration();;

        //生成并输出sql到文件(当前目录)和数据库
        SchemaExport dbExport=new SchemaExport(conf);;
       // dbExport.setOutputFile("build\\sql.txt");;
        dbExport.create(true, true);;

              SessionFactory  sessions = conf.buildSessionFactory();;
        //以上都是些固定格式的环境配置

        //start......
        Session s = sessions.openSession();;
                Transaction t =  s.beginTransaction();;

        //1.用普通使用方式建立对象,填充数据
            Person p1=new Person();;
            p1.setName("陈鹏");;
            p1.setAddress("西安东郊黄陵");;

            //2.持久化
            s.save(p1);;
                //此时p1已经可以在数据库中找到

            t.commit();;
            s.close();;
%>
</body>
</html>



TEST.JSP
WEB-INF
  ---CLASSES
       ------mypackage
                        ----------PERSON得配置文件和类
       --hibernate.cfg.xml
就这样了,报错:hibernate.properties not found

下面我要抱怨一下,不要阻止我!

看了好一阵HIBERNATE。发现太难了!因为觉得网上例子东一句西一句,一会用hibernate.cfg.xml,一会用hibernate.properties,

路径也奇怪,一会儿在CLASSES根下面,一会儿跑到包里面,一会儿居然又可以随便了。

OK,我用hibernate.cfg.xml,帖子里面说要到CLASSES跟下面,好啊,结果在JBUILDERX里面怎么弄都没有办法弄到那个该死得地方,我把所有东西都放在一个包里面吧,结果一编译都跑到---CLASSES ------mypackage里面去了,直接在WEB-INF上面点右键,结果不让加FILE,郁闷啊~,结果我直接到目录下面拷贝了一个,怎么想怎么别扭。

不知道怎么得,刚才还在报错:dialect找不到,现在又可以了

dialect到底用哪个嘛,我明明是SQLSERVER,帖子上好多人说dialect用SybaseDialect,呵呵,好嘛,我改,虽然不知道为什么,该死得微软,那个什么驱动居然不被支持,我这里又只有这个数据库,算我倒霉。

关于配置文件到底放在哪个路径,看了无数帖子,看到ROBBIN一张关于什么CLASSLOADER得帖子,更加昏迷。

到现在还不知道SQLSERVER中,我想用自增加主建ID,在HIBERNATE里面怎么配,到底是用什么?到底是先在配置文件里面设置好,再到数据库表里面做相应设置呢,还是包括建表在内都不管,在配置文件里面设置好然后通过那个建表得类在程序里面直接弄了??

我还有很多抱怨没有说完,不过就到这里了,我知道我反应迟钝,大家不用教训我,算我入错行了,最近郁闷得冒了泡了!!!!
   发表时间:2004-03-30  
有个JB下十分钟配hibernate的例子   找一下吧

嗯  我也是干看帖子加文档配出来的   

很多帖子都是看了不下三遍啊

文档就不用说了  开始都是挑着章节看   现在发现任何一章都要看三遍做六遍的example啊

Good Luck

btw:花这么长时间打了这么多字  说明你还是爱恨交加的   所以不用干冒泡了  继续下潜吧
0 请登录后投票
   发表时间:2004-03-30  
cfg.xml和property这两个文件我一直都是共存的

property里面设置  datasource 和 数据连接 属性

而cfg.xml里面设置  各个PO的mapping   以及  show_sql /fetch_size等通用并且需要经常修改的属性


粗略的看了一下

&lt;property name="dialect"&gt;net.sf.hibernate.dialect.SybaseDialect&lt;/property&gt;

这里需要改为sqlserver的

关于自增ID
&lt;id name = "id" unsaved-value = "null"&gt;
&lt;generator class="uuid.hex"/&gt;

改为
&lt;id name = "id" unsaved-value = "null"&gt;
&lt;generator class="increment"/&gt;

其实这些hibernate的文档都有   耐心点
0 请登录后投票
   发表时间:2004-03-31  
bluemeteor 写道
cfg.xml和property这两个文件我一直都是共存的

两个文件怎样共存呀?请执教
0 请登录后投票
   发表时间:2004-03-31  
bluemeteor 写道
cfg.xml和property这两个文件我一直都是共存的

property里面设置  datasource 和 数据连接 属性

而cfg.xml里面设置  各个PO的mapping   以及  show_sql /fetch_size等通用并且需要经常修改的属性


粗略的看了一下

&lt;property name="dialect"&gt;net.sf.hibernate.dialect.SybaseDialect&lt;/property&gt;

这里需要改为sqlserver的

关于自增ID
&lt;id name = "id" unsaved-value = "null"&gt;
&lt;generator class="uuid.hex"/&gt;

改为
&lt;id name = "id" unsaved-value = "null"&gt;
&lt;generator class="increment"/&gt;

其实这些hibernate的文档都有   耐心点


老兄,我用UUID没有错,但是用INCREMENT就杀那么反应都没有
关于这个该死的主键自动生成,我已经烦死了,到底怎么样才能在SQLSERVER里面生成:从1开始,然后以后每个加1的主键?
还有,&lt;id name = "id" unsaved-value = "null"&gt; 中的unsaved-value = "null"什么意思?主键还有不被赋值的时候?!我如果想设置其他字段的默认4直的时候,该怎么办啊?
0 请登录后投票
   发表时间:2004-03-31  
processing foreign key constraints

启动TOMCAT的时候,JSP什么都不显示,TOMCAT显示到上面的信息的时候就不反应了,怎么回事
0 请登录后投票
   发表时间:2004-03-31  
现在更奇怪了,我一旦把UUID.HEX换成INCREMENT,就报错:
no JNDI name configured
afterTransactionCompletion() was never called
unclosed connection
其他什么都不变啊,是UUID.HEX就没有问题,建表插入都正常,换成INCREMENT就要错,为什么?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics