Java hibernate主方法调用
我对Hibernate非常陌生,只想查询一下最初的基础知识 我已经创建了我的Hibernate beanJava hibernate主方法调用,java,hibernate,Java,Hibernate,我对Hibernate非常陌生,只想查询一下最初的基础知识 我已经创建了我的Hibernate bean package com.behaviour.chapter1; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class User { private int userId; private String firstName; @Id publi
package com.behaviour.chapter1;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
private int userId;
private String firstName;
@Id
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
我已经在那里配置了hibernate.cfg.xml和db连接。我的问题很简单,我如何从主方法调用它并在Hibernate3.6.6中使用它?我一直在关注一个在线教程,但它是针对Hibernate3.2的,看起来有点不同。如果有人能给我展示一个调用这个bean的非常简单的主方法,创建一个新用户(这将在这个表中创建一个用户),我将不胜感激。另外-如果有人有任何好的Hibernate教程链接,那就太好了:)
谢谢,Hibernate教程
Hibernate教程
是否需要会话对象来访问持久化单元。这些对象由SessionFactory对象提供
检查。是否需要会话对象来访问持久化单元。这些对象由SessionFactory对象提供
检查。我假设您已经设置了persistence.xml。如果是这样,您可以使用以下Java代码。您必须用JDBC设置数据和持久化单元替换“…”
private static final String PERSISTENCE_UNIT = "...";
final Map<String, String> properties = new HashMap<String, String>();
properties.put("javax.persistence.jdbc.driver", "...");
properties.put("javax.persistence.jdbc.url", "...");
properties.put("javax.persistence.jdbc.user", "...");
properties.put("javax.persistence.jdbc.password", "...");
final EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, properties);
final EntityManager em = emf.createEntityManager();
User user = new User();
user.setUserID(0);
user.setFirstName("David");
em.getTransaction().begin();
em.persist(user);
em.getTransaction().commit();
private static final String PERSISTENCE_UNIT=“…”;
最终映射属性=新HashMap();
properties.put(“javax.persistence.jdbc.driver”和“…”);
properties.put(“javax.persistence.jdbc.url”、“…”);
properties.put(“javax.persistence.jdbc.user”、“…”);
properties.put(“javax.persistence.jdbc.password”、“…”);
最终EntityManagerFactory emf=Persistence.createEntityManagerFactory(Persistence\u单元,属性);
最终EntityManager em=emf.createEntityManager();
用户=新用户();
user.setUserID(0);
user.setFirstName(“David”);
em.getTransaction().begin();
em.persist(用户);
em.getTransaction().commit();
嗯
Raku我假设您已经设置了persistence.xml。如果是这样,您可以使用以下Java代码。您必须用JDBC设置数据和持久化单元替换“…”
private static final String PERSISTENCE_UNIT = "...";
final Map<String, String> properties = new HashMap<String, String>();
properties.put("javax.persistence.jdbc.driver", "...");
properties.put("javax.persistence.jdbc.url", "...");
properties.put("javax.persistence.jdbc.user", "...");
properties.put("javax.persistence.jdbc.password", "...");
final EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, properties);
final EntityManager em = emf.createEntityManager();
User user = new User();
user.setUserID(0);
user.setFirstName("David");
em.getTransaction().begin();
em.persist(user);
em.getTransaction().commit();
private static final String PERSISTENCE_UNIT=“…”;
最终映射属性=新HashMap();
properties.put(“javax.persistence.jdbc.driver”和“…”);
properties.put(“javax.persistence.jdbc.url”、“…”);
properties.put(“javax.persistence.jdbc.user”、“…”);
properties.put(“javax.persistence.jdbc.password”、“…”);
最终EntityManagerFactory emf=Persistence.createEntityManagerFactory(Persistence\u单元,属性);
最终EntityManager em=emf.createEntityManager();
用户=新用户();
user.setUserID(0);
user.setFirstName(“David”);
em.getTransaction().begin();
em.persist(用户);
em.getTransaction().commit();
嗯
Raku有几种方法可以做到这一点,这是设计选择的问题,实现这一点的基本方法是从
hibernate.cfg.xml
文件创建会话工厂。确保文件可以位于类路径中
并使用下面的类,创建一个会话工厂对象,然后用于打开新会话的
public class HibernateUtil
{
private static final SessionFactory sessionFactory;
static
{
try
{
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex)
{
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}
现在要创建新用户,请执行以下操作:
public class DaoFactory
{
public void create(Object obj)throws Exception
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(obj);
session.getTransaction().commit();
}
}
Main
public static void main(String[] args)
{
try
{
User user = new User();
user.setFirstName("david99world");
DaoFactory factory = new DaoFactory();
factory.create(user);
}
catch(Exception ex)
{
ex.printStackTrace(System.out);
}
}
编辑
您的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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">none</property>
<mapping class="com.behaviour.chapter1.User"/>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
根
根
1.
org.hibernate.dialogue.mysqldialogue
线
org.hibernate.cache.NoCacheProvider
真的
没有一个
有几种方法可以做到这一点,这是设计选择的问题,实现这一点的基本方法是从hibernate.cfg.xml
文件创建会话工厂。确保文件可以位于类路径中
并使用下面的类,创建一个会话工厂对象,然后用于打开新会话的
public class HibernateUtil
{
private static final SessionFactory sessionFactory;
static
{
try
{
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex)
{
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}
现在要创建新用户,请执行以下操作:
public class DaoFactory
{
public void create(Object obj)throws Exception
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(obj);
session.getTransaction().commit();
}
}
Main
public static void main(String[] args)
{
try
{
User user = new User();
user.setFirstName("david99world");
DaoFactory factory = new DaoFactory();
factory.create(user);
}
catch(Exception ex)
{
ex.printStackTrace(System.out);
}
}
编辑
您的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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">none</property>
<mapping class="com.behaviour.chapter1.User"/>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
根
根
1.
org.hibernate.dialogue.mysqldialogue
线
org.hibernate.cache.NoCacheProvider
真的
没有一个
啊,非常感谢,我还没有设置persistence.xml;你能给我举个例子吗?另外,我仍然不确定用什么填充persistence\u单元?你能举个例子吗?啊,非常感谢,我没有设置persistence.xml;你能给我举个例子吗?另外,我仍然不确定用什么填充persistence\u单元?你能举个例子吗?啊,非常感谢:)我能问一下,你有我可以使用的hibernate.cfg.xml模板吗?我尝试了上面的方法,但我发现了一个错误,我几乎100%确定这是因为XML文件缺少一两个属性。您是如何配置Hibernate的?啊,非常感谢:)我可以问一下,您有可以使用的Hibernate.cfg.XML模板吗?我尝试了上面的方法,但我发现了一个错误,我几乎100%确定这是因为XML文件缺少一两个属性。您是如何配置Hibernate的?