[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kak-podklyuchit-postgresql-k-java-spring-prilozheniyu":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1057,"kak-podklyuchit-postgresql-k-java-spring-prilozheniyu",28,"postgresql","PostgreSQL","🐘","Как подключить PostgreSQL к Java\u002FSpring приложению?","Подключение PostgreSQL к Java-приложению выполняется через JDBC-драйвер. Spring Boot автоматизирует конфигурацию, достаточно указать URL, пользователя и пароль в application.yml.\n\n### Подключение через JDBC\n\n```xml\n\u003C!-- pom.xml -->\n\u003Cdependency>\n    \u003CgroupId>org.postgresql\u003C\u002FgroupId>\n    \u003CartifactId>postgresql\u003C\u002FartifactId>\n    \u003Cversion>42.7.3\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n\u003Cdetails>\u003Csummary>Прямое подключение через JDBC\u003C\u002Fsummary>\n\n```java\nString url = \"jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fbank_db\";\nString user = \"app_user\";\nString password = \"secret\";\n\ntry (Connection conn = DriverManager.getConnection(url, user, password);\n     PreparedStatement ps = conn.prepareStatement(\n         \"SELECT id, balance FROM accounts WHERE client_id = ?\")) {\n\n    ps.setLong(1, clientId);\n    try (ResultSet rs = ps.executeQuery()) {\n        while (rs.next()) {\n            long id = rs.getLong(\"id\");\n            BigDecimal balance = rs.getBigDecimal(\"balance\");\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Подключение через Spring Boot\n\n```yaml\nspring:\n  datasource:\n    url: jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fbank_db\n    username: app_user\n    password: ${DB_PASSWORD}\n    driver-class-name: org.postgresql.Driver\n  jpa:\n    database-platform: org.hibernate.dialect.PostgreSQLDialect\n    hibernate:\n      ddl-auto: validate\n    properties:\n      hibernate:\n        default_schema: core\n```\n\n### Работа с типами PostgreSQL через JDBC\n\n```java\n\u002F\u002F JSONB\nPGobject jsonObject = new PGobject();\njsonObject.setType(\"jsonb\");\njsonObject.setValue(\"{\\\"key\\\": \\\"value\\\"}\");\nps.setObject(1, jsonObject);\n\n\u002F\u002F UUID\nps.setObject(1, UUID.randomUUID());\n\n\u002F\u002F Array\nArray sqlArray = conn.createArrayOf(\"text\", new String[]{\"tag1\", \"tag2\"});\nps.setArray(1, sqlArray);\n```\n\n### Использование с JPA\u002FHibernate\n\n\u003Cdetails>\u003Csummary>Пример Entity с типами PostgreSQL\u003C\u002Fsummary>\n\n```java\n@Entity\n@Table(name = \"accounts\", schema = \"core\")\npublic class Account {\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n\n    @Column(name = \"client_id\", nullable = false)\n    private Long clientId;\n\n    @Column(precision = 15, scale = 2)\n    private BigDecimal balance;\n\n    @Column(name = \"created_at\", columnDefinition = \"timestamptz\")\n    private OffsetDateTime createdAt;\n\n    \u002F\u002F Для JSONB необходим пользовательский тип или библиотека\n    @Type(JsonBinaryType.class)\n    @Column(columnDefinition = \"jsonb\")\n    private Map\u003CString, Object> metadata;\n}\n```\n\n```xml\n\u003C!-- Для работы с JSONB через Hibernate -->\n\u003Cdependency>\n    \u003CgroupId>io.hypersistence\u003C\u002FgroupId>\n    \u003CartifactId>hypersistence-utils-hibernate-63\u003C\u002FartifactId>\n    \u003Cversion>3.7.3\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** покажите знание нюансов: `ddl-auto: validate` (не create!) для production, `PGobject` для JSONB через JDBC, `hypersistence-utils` для JSONB через Hibernate. Упомяните, что `OffsetDateTime` маппится на `timestamptz`, а `LocalDateTime` — на `timestamp` (без зоны).","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Как подключить PostgreSQL к Java\u002FSpring приложению? — Gymterview","Подключение PostgreSQL к Java-приложению выполняется через JDBC-драйвер. Spring Boot автоматизирует конфигурацию, достаточно указать URL, пользователя и пароль ","Подключение PostgreSQL к Java-приложению выполняется через JDBC-драйвер. Spring Boot автоматизирует конфигурацию, достат",[7,13],"Подключение PostgreSQL к Java-приложению выполняется через JDBC-драйвер. Spring Boot автоматизирует конфигурацию, достаточно указать URL, пользователя и пароль в application.yml.",true]