【问题标题】:Getting started with SpringBoot/Spring Data/ HibernateSpring Boot/Spring Data/Hibernate 入门
【发布时间】:2017-12-23 04:19:52
【问题描述】:

我刚开始实习,我需要做的所有工作让我有点不知所措。我从未使用过数据库,也不知道如何开始。我的主管要求我将 Spring 数据与内存数据库连接,以写入和删除对象(实际上是任何东西)。我正在使用 eclipse 并安装了 Spring(我认为),但被卡住了,不知道从哪里开始,让它变得简单。我以前从未从事过数据库工作,而且我的主管似乎一直都很忙。

我遇到了这个例子,但不知道在哪里写哪个代码,因为它似乎是为经验丰富的程序员解释的:

http://projects.spring.io/spring-data/#quick-start

以下是指南中的一些代码:

@Entity
public class Employee {

    private @Id @GeneratedValue Long id;
    private String firstName, lastName, description;

    private Employee() {}

    public Employee(String firstName, String lastName, String description) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.description = description;
        }
    }

这是在 Spring Data 头版,它是关于入门的。但我不确定这意味着什么,也不知道如何运行代码或构建什么类。如果我尝试在 pam 文件中编写他们的代码,它只会显示错误并且实体不起作用......

【问题讨论】:

  • “我想我已经安装了 spring”是什么意思?您是否将依赖项添加到您的 pom 或复制了 jars?如果是这样,您应该查看一些可用的许多很棒的春季教程。
  • 我在 eclipse 市场上找到了 spring,并安装了扩展。我做了一个可行的项目,但不知道如何访问数据库,而我所做的项目,我只是阅读和复制,试图理解点点滴滴。
  • 不要忘记接受/支持对您有帮助的答案...

标签: java spring eclipse maven spring-data


【解决方案1】:
  1. 首先,在 Eclipse 中设置 Maven(您可以在 Google 中找到说明,例如 here)。

  2. 然后转到start.spring.io 并生成您的项目模板。您只需选择 JPAH2 (H2 - 是内存数据库) 作为依赖项,设置您的 Group ('com. example' 默认)和 Name (默认为'demo')。然后单击“生成项目”。将文件保存并解压到计算机上的某个目录后,在 IDE 中打开此项目。

  3. 您将找到一个应用程序类 - DemoApplication。在它旁边创建您的实体类,例如 - Employee。您将在数据库中保存和加载其数据。在此类中自动生成 getters, setterstoString

@Entity
public class Employee {

    @Id 
    @GeneratedValue 
    private Long id;

    private String firstName, lastName, description;

    private Employee() {}

    public Employee(String firstName, String lastName, String description) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.description = description;
    }

    // Autogenerate here getters, setters and toString()
}
  1. 然后创建一个“存储库”类,它提供对您的数据库的访问:
public interface EmployeeRepository extends JpaRepository<Employee, Long> {}
  1. 在您的项目中找到DemoApplicationTests 类,对其进行编辑,然后运行:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    // Injecting your repository
    @Autoware
    private EmployeeRepository repo;

    @Test
    public void dbTest() {

        // Create two employees
        Employee gandalf = new Employee("Gandalf", "Grey", "Wizard");
        Employee frodo = new Employee("Frodo", "Baggins", "Hobbit");

        // Save them to DB
        repo.save(Arrays.asList(gandalf, frodo));

        // Read them from DB
        List<Employee> employees = repo.findAll();

        // Print them
        employees.forEach(System.out::println);
    }
}

就是这样!

更多信息

Spring Data JPA Project

Spring Data JPA Reference

Getting started guide

【讨论】:

  • 所以我完成了第 4 步之前的所有工作。我在 Eclipse 中在 Employee.java 所在的同一位置创建了一个接口类。它似乎仍然没有看到 Entity、Id 和 GeneratedValue 存在。我添加了 get/set 广告 toString,但是当我运行 pom 文件时它仍然崩溃。
  • @Asker First:'Thank you' 等于 接受/支持答案,不要忘记这一点!其次,如果您不知道如何在 Eclipse 中创建项目和 java 类,您应该在另一个问题中询问这个问题。或者只是在谷歌中找到答案,example。关于您的最后一个问题 - 只需将您在 start.spring.io 中创建的项目解压缩到某个目录中,然后在 Eclipse 中将其打开为 new project。然后在应用程序类的同一个包(文件夹)中创建你的实体类和repo类。
  • @Asker 您不需要“运行 pom 文件”。你不能'运行' pom 文件。您可以运行应用程序或一些测试。在我的回答中,我建议您只运行测试类。
【解决方案2】:

如果您以前没有使用过 Spring,那么您将大有收获。很多刚接触 Spring 的开发人员都会被它的控制容器反转和依赖注入所迷惑。 XML 配置文件中有很多历史教程材料,而大多数开发人员都希望以编程方式工作。最糟糕的是,Spring 往往会做很多魔术,这在查看代码时并不总是很明显。

首先要做的是确保您的 IDE 包含正确的插件。当您可以遵循注入类之类的定义时,可以减少与 Spring 的一些混淆,这是正确的插件可以为您做的事情。

就您面前的代码而言,听起来您的设置是您遇到问题的地方,也许您应该查看 Spring Boot 的教程或类似的教程以获得工作应用程序/容器。这个 Spring Data 启动器假定您已经有一个工作应用程序,并在将其集成到应用程序时“启动”。试试Sprint Boot quickstart 之类的东西,也许看看Actuators 也有不错的现成功能。

至于以前从未使用过数据库,这是一个很大的话题。在某些方面,Spring Data 可能会为您节省一些,因为对象关系映射(简称 ORM)将有助于自动将类实例转换为数据库行。但是,当您使用 @Id 之类的注解时,您也可能会发现自己开始为索引和参照完整性等概念而苦恼。

我会坦率地向你的主管坦白你在该领域的弱点,而不是默默地挣扎。积极主动地找到一些 Database 101 材料,并尽可能阅读有关该主题的内容,尤其是当您闲置时,并尊重您的主管可能不得不处理许多其他优先事项。优秀的开发人员永远不会无事可做,因为个人改进是一项持续的后台任务,而数据库是一项非常核心的技能。

【讨论】:

  • 感谢您的评论,我在一家实习生并不常见的公司工作,并且总是忙得不可开交,试图弄清楚这一切意味着什么......我想我会变得更好随着时间的推移,因为我们都经历了我现在正在经历的同样的事情。只是我认为这个社区可能会提供一些阅读材料:) 再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多