This works well for me.
https://upper.io/db.v3/

On Fri, 27 Sep 2019 at 15:56, Robert Engels <reng...@ix.netcom.com> wrote:

> The piece you are missing about ORM is the automatic change detection and
> caching when using complex object graphs. This is not trivial by any means
> when using raw SQL. It’s not easy using an orm either sometimes - depends
> on the orm.
>
> On Sep 27, 2019, at 6:13 AM, Dimas Prawira <prawira.dimas.yu...@gmail.com>
> wrote:
>
> if there's something you _don't_ know how to do in SQL, and it seems the
> ORM can do it for you, capture the raw SQL the ORM produces
> and tell me if it's easier for you to understand the SQL or the random ORM
> API. I 100% guarantee you that the raw SQL the ORM produces will be easier
> to understand
>
> ie: you could write the same raw SQL too, if you just tried
>
>
> All i'm suggesting is: try to learn raw SQL — i think you'll be pleasantly
> surprised at just how flexible and easy it is
> i would also argue that learning SQL is easier than learning a random ORM
> syntax. and raw SQL has the benefit that you'll be able to use it again, on
> a future project, in a different programming language
> while every ORM i've ever seen is 100% bound entirely to only the
> programming language it's used in
> i've never seen two ORMs with the same API, or even a similar API
> but raw SQL stays the same, for now and 50+ years from now
>
>
> Let me give you an example :
>
> // newSession creates a new session in the database, returning the created
>
>   // session id.
>   func (s *server) newSession(remoteAddr string) (int64, error) {
>       const sqlstr = `insert into sessions (remote_addr) values ($1)
> returning session_id`
>       var id int64
>       if err := s.db.QueryRow(sqlstr,
> cleanRemoteAddr(remoteAddr)).Scan(&id); err != nil {
>           return 0, err
>       }
>       return id, nil
>   }
>
> queries are just as simple.
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CA%2Bp%2BMUebx-LZ%2Bj9qTvoDJrL7RCyBrNJ5P6nq0M8YPs3wh_HCEQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CA%2Bp%2BMUebx-LZ%2Bj9qTvoDJrL7RCyBrNJ5P6nq0M8YPs3wh_HCEQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/1DCC8F36-9213-42E7-A156-273A93429686%40ix.netcom.com
> <https://groups.google.com/d/msgid/golang-nuts/1DCC8F36-9213-42E7-A156-273A93429686%40ix.netcom.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CALHF5toPy%2Bfn_d2YNP2unVF277wkp0c7pYPjm-nXRku8RrHLFQ%40mail.gmail.com.

Reply via email to