Страницы

понедельник, 23 февраля 2015 г.

суббота, 7 февраля 2015 г.

Работа с JSON типом данных в PosgreSQL

Как оказалось, все довольно просто - без лишних слов привожу пример кода


public static void main(String[] args) {
        
        try {
            TestJson();
        } catch (SQLException e) {
            System.out.println("-- Error");
            e.printStackTrace();
        }
    }


    public static void TestJson() throws SQLException {

        Connection c;
        Statement stmt;

        try {

            try {
                Class.forName("org.postgresql.Driver");
            } catch (ClassNotFoundException e) {
               System.out.println("А где ваш PostgreSQL JDBC драйвер? Включите в ваш library path!");
                return;
            }

            c = DriverManager
                    .getConnection("jdbc:postgresql://localhost:5432/testdatabase", "postgres", "password");
            c.setAutoCommit(false);
            System.out.println("-- Opened database successfully");
            String sql;


            //-------------- CREATE TABLE ---------------
            stmt = c.createStatement();
            sql = "CREATE  TABLE SAMPLE (ID INT PRIMARY KEY NOT NULL, DATA JSON)";
            stmt.executeUpdate(sql);
            stmt.close();
            System.out.println("-- Table created successfully");


            //--------------- INSERT ROW with JSON v1 ------------------
            stmt = c.createStatement();
            sql = "INSERT INTO SAMPLE (ID,DATA) VALUES (1, '{\"username\":\"alena\",\"post\":1024,\"email\":\"butakova.alena@gmail.com\" , \"blocked\":true  }' );";
            stmt.executeUpdate(sql);


            //--------------- INSERT ROW with JSON v2 ------------------
            int id = 2;
            String jsonString = "{\"username\":\"igor\",\"posts\":2048,\"email\":\"igor.butakov@gmail.com\"}";

            PGobject jsonObject = new PGobject();
            jsonObject.setType("json");
            jsonObject.setValue(jsonString);

            PreparedStatement pstmt = c.prepareStatement("insert into sample (id, data) values (?, ?)");
            pstmt.setInt(1, id);
            pstmt.setObject(2, jsonObject);
            pstmt.executeUpdate();
            pstmt.close();
            c.commit();

            //--------------- SELECT DATA ------------------
            //http://www.postgresql.org/docs/9.3/static/functions-json.html
            //http://www.postgresql.org/docs/9.4/static/functions-json.html
            stmt = c.createStatement();
            ResultSet rs = stmt.executeQuery( "SELECT id, DATA, DATA::json->>'username' AS name FROM SAMPLE  where DATA::json->>'blocked'='true' ;" );
            while ( rs.next() ) {
                int objectid = rs.getInt("id");
                String obj = rs.getString("data");
                String name = rs.getString("name");
                System.out.println(String.format("ID=%s, DATA=%s, NAME=%s",objectid,obj, name));
            }
            rs.close();
            stmt.close();
            System.out.println("-- Operation SELECT done successfully");

            c.close();

        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getClass().getName()+": "+e.getMessage());
            System.exit(0);
        }
        System.out.println("-- All Operations done successfully");

    }

соответственно после запуска будет выведено


и в базе данных появится табличка с данными


Работа с PostgreSQL в Java

Создаем базу данных в PostgreSQL

Создаем новый проект в IDEA (в примере версия 14)


пятница, 6 февраля 2015 г.

Настройка SSL на Jetty

http://blog.knoldus.com/2013/09/10/configure-ssl-on-jetty-server-to-run-it-with-https/

Шпаргалки

Кроссплатформенные штуки для Android и iOS

Особо ничего не расписываю, - так собрал в одном месте ссылки

Oracle Mobile Application Framework (Java)

http://www.oracle.com/technetwork/developer-tools/maf/overview/index.html

Unity (Mono)

Xamarin (Mono)

http://xamarin.com/

RAD Studio XE7 (Native)

http://www.embarcadero.com/products/rad-studio

Marmalade (Native)

https://www.madewithmarmalade.com/index

Apache Cordova (HTML, JavaScript)

http://cordova.apache.org/

SenchaTouch

http://www.sencha.com/products/touch/

PhoneGap (HTML, JavaScript)

http://phonegap.com/


Appcelerator (HTML, JavaScript)


Список популярных ORM для Android и Java разработчика

GreenDAO (быстрая ORM для Android и SQLite)

https://github.com/greenrobot/greenDAO
http://greendao-orm.com/documentation/

SPRING (JPA)

http://projects.spring.io/spring-data/
http://spring.io/
простота, скорость и без велосипедов
+ дополнения-расширения
http://www.querydsl.com/

http://habrahabr.ru/post/248541/ туториал Spring MVC3, аннотации Hibernate, MySQL
http://habrahabr.ru/post/249073/ Spring - Hibernate ассоциации один ко многим
http://habrahabr.ru/post/222077/ Java 8, Spring, Hibernate
http://habrahabr.ru/post/193140/ Работа с шедулером
http://habrahabr.ru/post/139421/ Spring Data на примере JPA

ORM Lite (Java ORM с поддержкой SQL баз)

http://ormlite.com/
http://ormlite.com/sqlite_java_android_orm.shtml
https://github.com/jakenjarvis/Android-OrmLiteContentProvider

SugarORM (ORM для android)

http://satyan.github.io/sugar/getting-started.html
есть утечки памяти, плохо

ActiveAndroid

http://www.activeandroid.com/

Androrm

http://www.androrm.com/

OrmDroid

https://github.com/roscopeco/ormdroid

Hibernate (JPA)

http://hibernate.org/

статьи

http://krams915.blogspot.ru/p/tutorials.html туториалы на все аспекты применения

переводы

http://habrahabr.ru/post/234841/ Hibernate и PostgreSQL JSON Type
http://habrahabr.ru/post/135176/ Hibernate cache

Realm.io (NO SQL ORM для Android и iOS)

http://realm.io/

Morphia (ORM для MongoDB)

https://github.com/mongodb/morphia
http://habrahabr.ru/post/118783/

Parse.com (BackEnd, но есть локальное хранилище NoSQL)

http://Parse.com

Прочее для Android

https://bitbucket.org/qbusict/cupboard/wiki/Home
https://github.com/pushtorefresh/bamboo-storage