【问题标题】:Do I need Maven to use Hibernate?我需要 Maven 才能使用 Hibernate 吗?
【发布时间】:2011-03-24 12:12:44
【问题描述】:

我是第一次尝试使用 Hibernate,在入门指南的早期,它引用了 Maven。如果我没记错的话,Maven 似乎是一个构建工具。但是,到目前为止,我一直在使用 Eclipse 来构建我的项目。

有没有办法让我在不需要 Maven 的情况下使用 Hibernate?我可以通过 Eclipse 做我需要的事情吗?有没有人有一个资源链接可以告诉我如何做到这一点?

【问题讨论】:

    标签: java hibernate maven-2 orm


    【解决方案1】:

    你不需要 maven 来使用 Hibernate。 Maven 提供了一个简单的依赖来包含所有必要的 jars。如果没有 maven,您将不得不下载并导入 hibernate 所依赖的每个 jar。这将是一个手动过程。

    Hibernate 不像 javax.sql 那样依赖 maven。

    【讨论】:

    • 您也可以在 Eclipse 中使用 maven。如果您有兴趣,请查看 m2eclipse 插件。
    • @Chris Nava,你说得对,它也很好用。还要看看 maven-eclipse-plugin 可以很好地构建你的 .project。
    【解决方案2】:

    不,当然不是。我从不使用 Maven - 任何事情。继续使用 Eclipse 来构建您的项目。

    我发现一次学习一件事已经够难的了。如果您只是在学习 Hibernate,为什么要使用 Maven 来复杂化您的生活?

    更新:我写这个答案已经六年了。你仍然不需要 Maven 来使用 Hibernate,但我已经改变了我推荐哪一个的想法。

    我了解到 Maven 是管理依赖项和项目生命周期的最佳方式。休眠?仍然没有理由。保持简单,远离 ORM,直到它变得必不可少。

    【讨论】:

    • 我已经尝试开始学习 Hibernate 2 天了。我认为遵循流行的方式“使用 maven 构建和运行”会更容易。实际上并非如此。我不知道发生了什么,并尝试了解缺少或错误的内容。到目前为止,我仍然不了解 Hibernate 的基础知识,我仍在寻找构建和运行它的方法。有点烦人……
    • 为什么要添加两个你不知道的东西?分解问题。为什么你认为你需要 Hibernate?也许这才是真正的问题。它会给你带来什么好处?我没有看到。
    • IMO 处理依赖项的手动过程比让 maven 为您完成所有工作要困难得多。 Eclipse 已经预装了 maven,所以基本上你所要做的就是将依赖关系从 hybernate 复制到你的 pom.xml 并单击更新。
    • 阅读我的完整答案:我也推荐 Maven。
    • 也许我误会了你。 IMO,如果您有任何外部库,即使它只是休眠,您也应该始终使用诸如 maven 或 gradle 之类的构建工具。不仅因为它更快,而且它还具有自动化测试之类的功能。此外,如果您想共享您的代码,您还需要上传 lib 文件夹。如果您想更新某些内容,它将变得一团糟。原因无穷无尽。当然,如果你只写 HalloWorld,你就不需要它,但至少我没有看到其他方面的缺点。
    【解决方案3】:

    您不需要 Maven 即可使用 Hibernate。如果没有 Maven,您只需要手动下载 jar 依赖项并将其添加到项目中,这并不难。而且您可以使用您使用的任何构建过程。

    【讨论】:

      【解决方案4】:
      【解决方案5】:

      好吧,我迟到了这个答案。但尽管如此,它将对未来的读者有所帮助。在这里,我添加了如何在没有 Maven 的情况下配置项目。

      配置

      1. here 下载 Hibernate 5。
      2. 从里面的文件夹中提取所需的 jars 并将其添加到以下 hibernate-release-5.0.7.Final.zip\hibernate-release-5.0.7.Final\lib\required 的构建路径中。
      3. 确保将以下 jar 添加到项目的类路径中:

        antlr-2.7.7.jar
        commons-dbcp2-2.1.1.jar
        dom4j-1.6.1.jar
        geronimo-jta_1.1_spec-1.1.1.jar
        hibernate-commons-annotations-5.0.1.Final.jar 
        hibernate-core-5.0.7.Final.jar
        hibernate-jpa-2.1-api-1.0.0.Final.jar
        jandex-2.0.0.Final.jar
        javassist-3.18.1-GA.jar
        javax.servlet.jsp.jstl-api-1.2.1-sources.jar
        jboss-logging-3.3.0.Final.jar
        sqljdbc4-3.0.jar //or whatever database you use
        hibernate-entitymanager-5.0.7.Final
        

      代码:

      Employee.java

      import java.io.Serializable;
      
      public class Employee implements Serializable{
      
         private static final long serialVersionUID = 1L;
         private int id;  
         private String firstName;
         private String lastName;
         private int salary;
         //setters and getters  
       }
      

      HibernateUtil.java

      import org.hibernate.SessionFactory;
      import org.hibernate.cfg.Configuration;
      
      public class HibernateUtil {
      
        private static final SessionFactory sessionFactory = buildSessionFactory();
      
        private static SessionFactory buildSessionFactory() {
          try {
              // Create the SessionFactory from hibernate.cfg.xml
              return 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 static void shutdown() {
          // Close caches and connection pools
          getSessionFactory().close();
        }
      
      }
      

      访问休眠:

       public void hibernateTest(){
              System.out.println("Maven + Hibernate + MySQL");
              Session session = HibernateUtil.getSessionFactory().openSession();
      
              session.beginTransaction();
              Employee e = new Employee();
              System.out.println("Beginning transaction");
              e.setFirstName("Pritam Test Again");
              e.setLastName("Banerje");
              e.setSalary(12);
      
              session.save(e);
              session.getTransaction().commit();
          }
      

      创建表查询:

      CREATE TABLE EMPLOYEE123 
      (ID INTEGER,
      FIRST_NAME VARCHAR,
      LAST_NAME VARCHAR,
      SALARY INTEGER);
      

      配置文件可以是此类文件的任何标准。这是 Employee.hbm.xml 的示例。请记住正确放置包名称。

      <class name="com.sow.application.Employee" table="EMPLOYEE123">
        <meta attribute="class-description">
           This class contains the employee detail. 
        </meta>
        <id name="id" type="int" column="id">
           <generator class="native"/>
        </id>
        <property name="firstName" column="first_name" type="string"/>
        <property name="lastName" column="last_name" type="string"/>
        <property name="salary" column="salary" type="int"/>
      </class> 
      

      这里是配置xml文件hibernate.cfg.xml

      <hibernate-configuration>
       <session-factory>
       <property name="hibernate.dialect">
         org.hibernate.dialect.SQLServerDialect
       </property>
       <property name="hibernate.connection.driver_class">
         com.microsoft.sqlserver.jdbc.SQLServerDriver
       </property>
      
       <property name="hibernate.connection.url">
         jdbc:sqlserver://localhost:1444 
       </property>
        <property name="hibernate.default_schema">dbo</property>
       <property name="hibernate.connection.username">
         UserName
       </property>
      <property name="hibernate.connection.password">
         Password
      </property>
      
      <!-- List of XML mapping files -->
      <mapping resource="com/sow/application/Employee.hbm.xml"/>
      
      </session-factory>
      </hibernate-configuration>
      

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 2014-12-11
        • 1970-01-01
        • 2015-06-22
        • 2012-01-02
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多