LINUX.ORG.RU

Не совсем понял, в чем проблема :)

Юзаю Постгрес

CREATE SEQUENCE activejdbc_test_auto_id_users;

CREATE TABLE employees (
      id int NOT NULL DEFAULT nextval('activejdbc_test_auto_id_users') PRIMARY KEY,
      first_name VARCHAR(56),
      last_name VARCHAR(56)
  );

Main.java (тот, который запускать):

import org.javalite.activejdbc.Base;

public class Main {
    public static void main(String [] args ){
        Base.open("org.postgresql.Driver", "jdbc:postgresql://localhost/test", "user", "password");
        Employee e = new Employee();
        e.set("first_name", "John");
        e.set("last_name", "Doe");
        e.saveIt();
        Employee foundEmpl = Employee.findFirst("first_name = ?", "John");
        String emplName = foundEmpl.getFirstName();
        System.out.println("Employee name: "+emplName);
    }
}

Моделька:

import org.javalite.activejdbc.Model;

public class Employee extends Model {
    public String getFirstName(){
        return getString("first_name");
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>activeJdbcTest</groupId>
    <artifactId>activeJdbcTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901.jdbc4</version>
        </dependency>
        <dependency>
            <groupId>org.javalite</groupId>
            <artifactId>activejdbc</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.javalite</groupId>
            <artifactId>activejdbc-instrumentation</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

    <properties>
        <generated.sources.dir>"${basedir}/target/generated/src"</generated.sources.dir>
    </properties>


    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <fork>true</fork>
                    <meminitial>128m</meminitial>
                    <maxmem>512m</maxmem>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.javalite</groupId>
                <artifactId>activejdbc-instrumentation</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>instrument</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${generated.sources.dir}</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--<plugin>-->
                <!--<artifactId>maven-antrun-plugin</artifactId>-->
                <!--<version>1.7</version>-->
                <!--<executions>-->
                    <!--<execution>-->
                        <!--<phase>generate-sources</phase>-->
                        <!--<configuration>-->
                            <!--<target name="-post-compile">-->
                                <!--<property name="compile_classpath" refid="maven.compile.classpath"/>-->
                                <!--<property name="runtime_classpath" refid="maven.runtime.classpath"/>-->
                                <!--<property name="test_classpath" refid="maven.test.classpath"/>-->
                                <!--<property name="plugin_classpath" refid="maven.plugin.classpath"/>-->

                                <!--<echo message="compile classpath: ${compile_classpath}"/>-->
                                <!--<echo message="runtime classpath: ${runtime_classpath}"/>-->
                                <!--<echo message="test classpath:    ${test_classpath}"/>-->
                                <!--<echo message="plugin classpath:  ${plugin_classpath}"/>-->
                                <!--<java classname="org.javalite.instrumentation.Main" failonerror="true">-->
                                    <!--<sysproperty key="outputDirectory" value="${generated.sources.dir}"/>-->
                                    <!--<classpath>-->
                                        <!--<pathelement path="${generated.sources.dir}" />-->
                                        <!--<pathelement path="${java.class.path}" />-->
                                        <!--<pathelement path="${compile_classpath}" />-->
                                        <!--<pathelement path="${runtime_classpath}" />-->
                                        <!--<pathelement path="${test_classpath}" />-->
                                        <!--<pathelement path="${plugin_classpath}" />-->
                                    <!--</classpath>-->
                                <!--</java>-->
                            <!--</target>-->
                        <!--</configuration>-->
                        <!--<goals>-->
                            <!--<goal>run</goal>-->
                        <!--</goals>-->
                    <!--</execution>-->
                <!--</executions>-->
            <!--</plugin>-->
        </plugins>
    </build>

</project>
stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

хм... Постгрес, говорите, юзаете?

Я вот тоже попробовал его через ActiveJDBC заюзать... А оно схем не воспринимает вообще. Это и в гуглогруппе обсуждалось. Вроде разрабы пока забили на эту проблему в Постгресе и Оракле.

А у Вас как с этим?

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

кстати, почитал про activejdbc и написал небольшой обзор в ЖЖ:

http://users.livejournal.com/__hedin/544833.html

может поможет.

А оно схем не воспринимает вообще. Это и в гуглогруппе обсуждалось.

щито?

а вот тут что написано: https://code.google.com/p/activejdbc/wiki/DatabaseConnectionManagement

в самом конце, где «Specifying DB Schema» - это неправда что ли?

дефолтную схему для юзверя оно прохавало ОК, с этими извращениями не играл еще

вообще, не совсем понятно, зачем оно нужно, если есть Hibernate и в больших проекта все равно нужно юзать его (если ты лид и заюзаешь что-то другое - тебя не поймет бОльшая часть джуниоров, и наоброт - если ты джуниор, лид заставит юзать Hibernate, такой вот порочный круг)

по-быстрому быдлокодить прототипы? =)

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs
-Dactivejdbc.default.schema=myschema

Угумс, одна на проект и та - при сборке...

Я БД составил на 10 схемах. Она не нашла таблицу по уникальному имени (в других схемах такое название не повторяется). Даже при указании строго имени таблицы через @Table(«name»).

вообще, не совсем понятно, зачем оно нужно, если есть Hibernate и в больших проекта все равно нужно юзать его (если ты лид и заюзаешь что-то другое - тебя не поймет бОльшая часть джуниоров, и наоброт - если ты джуниор, лид заставит юзать Hibernate, такой вот порочный круг)

А как быть, если лид сказал, что гибернэйт не нужен и его поддержали (аргументированно) все сотрудники?

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Кстати, после этого щупал еще jOOQ. Сгенерил классы для всех таблиц с учетом схем. Запросы - к любой таблице любой схемы. Пока мне нравится.

Да и разобрался я, как его прикрутить к проекту, гораздо быстрее, чем этот ActiveJDBC

bvn13 ★★★★★
() автор топика
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от bvn13

А как быть, если лид сказал, что гибернэйт не нужен и его поддержали (аргументированно) все сотрудники?

«не нужен» - это лоровский аргумент, в реальной жизни обычно пользуются «нам нужно вот это». Так вам нужно что?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Нам нужна библа, которая приближена к ActiveRecords, и в которую можно было бы наиболее просто внедрить hs4j.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

HandlerSocket показал себя в 10 раз быстрее, нежели обычный мускуль (InnoDB), постгрес или монго.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

еще не видел. Спасибо. Надо будет глянуть, как оно.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

querydsl глянул или решил не смотреть?

ты заразил этим безумием, хочу fluent interface :)

вот тут есть сравнение: http://blog.jooq.org/tag/querydsl/

заметил (в постах о) jOOQ крутую штуку - можно смотреть результат, sql string, который отправится на выполнение

зато в querydsl можно юзать не только БД, а встроенные жавовские коллекции. Т.е. можно везде юзать одинаковый синтаксис.

может можно как-нибудь совместить querydsl и jOOQ. Юзат jOOQ как бэкенд, тем более что конструкции по смыслу одни и те же.

вижу проблему в том, что это нужно прикручивать к вебферймворку. Чую адскую попоболь при прикручивании этого к Playframework2. Там и так генератор на генераторе и генератором погоняет, а тут еще два, да в самое «сердце» - работу с БД

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

queryDSL глянул. По сути - тот же active records.

В jOOQ аналогично запросы строятся.

Class.forName("org.postgresql.Driver").newInstance();
            conn = DriverManager.getConnection(url, userName, password);
            DSLContext create = DSL.using(conn, SQLDialect.POSTGRES);
            org.jooq.Result<Record> result = create.select().from(Servers.SERVERS).fetch(); 
            
            for (Record r : result) {
            	int id = r.getValue(Servers.SERVERS.ID).intValue();
            	String host = r.getValue(Servers.SERVERS.IP).toString();
            	System.out.println("ID: " + id + "   IP: " + host);
            }
            
            conn.close();

Интересней было бы указывать интерфейс к БД динамически. Чтобы можно было бы hs4j воткнуть.

По этой проблеме я отдельную тему создал тут. Но пока неинтересную, видимо: Как проще интегрировать hs4j в jOOQ ?

bvn13 ★★★★★
() автор топика
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от bvn13

вангую, это такая маргинальщина, что никто не видел их даже по отдельности, не то что в связке %)

я бы может даже попробовал, но не вижу, как я это могу заюзать IRL. Я юзаю постгрес там где нужно последовательное/реляционное чтение-запись, монго для свалки, и json в text-поле постгреса когда нужна совсем-совсем свалка что монго жалко замусоривать. Вот тут пишут, что для постгреса адаптировать hs4j нельзя.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Да, hs4j - это только для мускуля. Вот только из-за его скорости выбор падает больше в сторону мускуля (сейчас проект в стадии разработки).

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Ты тесты сам делал или откуда-то из интернета? Мы нищеброды, халявное ускорение nosql на порядок - это много денег. Есть какая-нибудь ссылка или код теста, чтобы потрясти им на всеобщем обозрении и сказать «вот что крест животворящий делает»?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

тесты делал другой наш сотрудник. Попробую скинуть результаты тебе.

bvn13 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.