{"id":48,"date":"2026-10-09T14:38:51","date_gmt":"2026-10-09T06:38:51","guid":{"rendered":"https:\/\/blog.pcjust.com\/?p=48"},"modified":"2026-10-10T09:04:48","modified_gmt":"2026-10-10T01:04:48","slug":"springboot2-jpa-oracle-example","status":"publish","type":"post","link":"https:\/\/www.suncl.me\/blog\/springboot2-jpa-oracle-example\/","title":{"rendered":"springboot2+jpa+oracle\u5b9e\u4f8b"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"361\" src=\"http:\/\/blog.pcjust.com\/wp-content\/uploads\/2026\/10\/image-10-1024x361.png\" alt=\"\" class=\"wp-image-60\" srcset=\"https:\/\/www.suncl.me\/blog\/wp-content\/uploads\/2026\/10\/image-10-1024x361.png 1024w, https:\/\/www.suncl.me\/blog\/wp-content\/uploads\/2026\/10\/image-10-300x106.png 300w, https:\/\/www.suncl.me\/blog\/wp-content\/uploads\/2026\/10\/image-10-768x271.png 768w, https:\/\/www.suncl.me\/blog\/wp-content\/uploads\/2026\/10\/image-10-1536x542.png 1536w, https:\/\/www.suncl.me\/blog\/wp-content\/uploads\/2026\/10\/image-10.png 1676w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pom.xml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n    xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n \n    &lt;groupId&gt;com.example&lt;\/groupId&gt;\n    &lt;artifactId&gt;springboot-jpa-oracle-demo&lt;\/artifactId&gt;\n    &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n    &lt;packaging&gt;jar&lt;\/packaging&gt;\n \n    &lt;name&gt;springboot-jpa-oracle-demo&lt;\/name&gt;\n    &lt;description&gt;Demo project for Spring Boot&lt;\/description&gt;\n \n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;2.0.5.RELEASE&lt;\/version&gt;\n        &lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\n    &lt;\/parent&gt;\n \n    &lt;properties&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n        &lt;java.version&gt;1.8&lt;\/java.version&gt;\n    &lt;\/properties&gt;\n \n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n \n        &lt;dependency&gt;\n           &lt;groupId&gt;com.oracle&lt;\/groupId&gt;\n         \n           &lt;artifactId&gt;ojdbc6&lt;\/artifactId&gt;\n         \n           &lt;version&gt;11.2.0.4&lt;\/version&gt;\n         \n          &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n \n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n \n \n&lt;\/project&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u3000\u3000application.properties<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCL\n \nspring.datasource.username=test\n \nspring.datasource.password=test\n \nspring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver\n \nspring.jpa.properties.hibernate.hbm2ddl.auto=update\n \nspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect\n \nspring.jpa.show-sql= true\n \nspring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl\n \nserver.port = 9000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3000\u3000<strong>domain:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo.domain;\n \nimport javax.persistence.Column;\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.Id;\nimport org.hibernate.annotations.GenericGenerator;\n \n@javax.persistence.Table(name = \"t_dynasty\")\n@javax.persistence.Entity\npublic class Dynasty {\n    \/**\n     *\n     * id\n     *\n     *\/\n \n    @Id\n \n    @GenericGenerator(name = \"system-uuid\", strategy = \"uuid\")\n \n    @GeneratedValue(generator = \"system-uuid\")\n \n    @Column(name = \"id\")\n \n    private String id;\n \n    @Column(name = \"name\")\n \n    private String name;\n \n    @Column(name = \"startYear\")\n \n    private String startYear;\n \n    @Column(name = \"endYear\")\n \n    private String endYear;\n \n    @Column(name = \"age\")\n \n    private Integer age;\n \n    public String getId() {\n \n        return id;\n \n    }\n \n    public void setId(String id) {\n \n        this.id = id;\n \n    }\n \n    public String getName() {\n \n        return name;\n \n    }\n \n    public void setName(String name) {\n \n        this.name = name;\n \n    }\n \n    public String getStartYear() {\n \n        return startYear;\n \n    }\n \n    public void setStartYear(String startYear) {\n \n        this.startYear = startYear;\n \n    }\n \n    public String getEndYear() {\n \n        return endYear;\n \n    }\n \n    public void setEndYear(String endYear) {\n \n        this.endYear = endYear;\n \n    }\n \n    public Integer getAge() {\n        return age;\n    }\n \n    public void setAge(Integer age) {\n        this.age = age;\n    }\n \n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3000<strong>\u3000repository:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo.repository;\n \nimport org.springframework.data.jpa.repository.JpaRepository;\n \nimport com.example.demo.domain.Dynasty;\n \npublic interface DynastyRepository extends JpaRepository&lt;Dynasty, Long&gt; {\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3000<strong>\u3000controller:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo.web;\n \nimport java.util.List;\n \nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n \nimport com.example.demo.domain.Dynasty;\nimport com.example.demo.repository.DynastyRepository;\n \n@RestController\n@RequestMapping(\"\/dynasty\")\npublic class DynastyController {\n \n    @Autowired\n    private DynastyRepository dynastyRepository;\n \n    @RequestMapping(\"\/findAll\")\n    public List&lt;Dynasty&gt; findAll() {\n        List&lt;Dynasty&gt; dynastys = dynastyRepository.findAll();\n        return dynastys;\n    }\n \n    @RequestMapping(\"\/hello\")\n    public String hello() {\n        return \"success\";\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3000\u3000<strong>\u542f\u52a8\u7a0b\u5e8f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo;\n \nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n \n@SpringBootApplication\npublic class Demo1Application {\n    public static void main(String&#91;] args) {\n        SpringApplication.run(Demo1Application.class, args);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>pom.xml \u3000\u3000application.properties \u3000\u3000domain: \u3000\u3000repository &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.suncl.me\/blog\/springboot2-jpa-oracle-example\/\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cspringboot2+jpa+oracle\u5b9e\u4f8b\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":2,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":63,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions\/63"}],"wp:attachment":[{"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.suncl.me\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}